reactjs - 响应式图像
问题描述
我正在尝试在 React 中实现 HTML-“艺术方向”(为不同的视口宽度显示不同的图像)。这是 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 来指定它。
谢谢。
解决方案
您刚刚在和元素的srcSet
属性中指定了相同的值,这将为所有宽度显示相同的图像。这可能会有所不同,但在这种情况下浏览器更有可能选择中等图像。source
img
要为小屏幕和大图像显示中等图像,只需更改:
<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>;
推荐阅读
- ios - 无法在 ionic cordova 平台 ios 中安装“cordova-plugin-accountkit”
- java - 无法在 Weblogic Server 中创建域
- arrays - 如何在 rxswift 中绑定数组中的选择器?
- sockets - 从 TCP Socket 读取所有可用字节(未知字节数)
- flutter - 因为sdk的flutter_test的每个版本都依赖... sdk的flutter_test被禁止,版本求解失败
- node.js - Exec-NPM-Install 为本地连接抛出错误
- sql-server - SQL Server xml 查询不返回预期结果
- python - 使用“python --version”命令显示错误消息
- python - PyOpenGL - 当一些场景元素需要消失时更新三角形数组
- sql-server - 删除语句需要很长时间