reactjs - ReactJS 中带有 <picture> 和 <source> 的响应式图像

标签 reactjs

我正在尝试在 React 中实现 HTML-“艺术方向”(为不同的视口(viewport)宽度显示不同的图像)。这是 JSX:

import LogoImg from "../../abstracts/media/logo-large.svg";
import LogoImgMedium from "../../abstracts/media/logo-medium.svg";

<picture>
   <source srcSet={`${LogoImgMedium} 1x, ${LogoImg} 2x`} media="(max-width: 37.5em)" />
   <img 
      className="logo__apple" 
      srcSet={`${LogoImgMedium} 1x, ${LogoImg} 2x`} 
      alt="Full Logo"
      src={LogoImgMedium} />
 </picture>

media 属性中定义的断点似乎不起作用。你们知道为什么吗?我尝试用 px、rem 和 em 来指定它。

谢谢。

最佳答案

您刚刚在 sourceimg 元素的 srcSet 属性中指定了相同的值,这将为所有宽度显示相同的图像。这可能会有所不同,但在这种情况下浏览器更有可能选择中等图像。

要为小屏幕和大图像显示中图像,只需更改:

<picture>
   <source srcSet={`${LogoImgMedium} 1x, ${LogoImg} 2x`} media="(max-width: 37.5em)" />
   <img 
      className="logo__apple" 
      srcSet={`${LogoImgMedium} 1x, ${LogoImg} 2x`} 
      alt="Full Logo"
      src={LogoImgMedium} />
 </picture>

至:

<picture>
  <source srcSet={`${LogoImgMedium} 1x`} media="(max-width: 500px)" />
  <img
    className="logo__apple"
    srcSet={`${LogoImg} 2x`}
    alt="Full Logo" />
</picture>;

关于reactjs - ReactJS 中带有 <picture> 和 <source> 的响应式图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56431701/

相关文章:

javascript - ReactJS map onClick 获取值

javascript - 使变量在渲染函数中可用 | react js

javascript - ReactCSSTransitionGroup 动画不流畅

javascript - 为什么在初始页面加载时多次调用 React Ref 回调(作为箭头函数或内联函数)?

javascript - ReactJS - 处理整个部分的 onClick 事件,除了几个子元素

javascript - 如何在 react js中单击按钮或图标单击打开日期选择器

html - transitionX 将文本移离屏幕

javascript - 通过 ReactDOM 渲染多个组件

reactjs - 有没有办法首先选择material-ui的自动完成功能

reactjs - create-react-app 可以与 TypeScript 一起使用吗