responsive-design - 在图像上显式设置高度和宽度似乎会使尺寸属性无效
问题描述
明确设置height
和width
图像是 Lighthouse 和 Pagespeed 洞察力的建议。但我也想利用srcset
和sizes
属性来提供响应式图像。
但我只能得出结论,设置height
并明确地使属性width
无效。sizes
无论视口宽度如何,下面的图像都只会以 1500 像素的宽度呈现。
<picture>
<img
srcset="
./images/original_s.jpg 100w,
./images/original_m.jpg 200w,
./images/original_l.jpg 550w
"
sizes="(max-width: 768px) calc(100vw - 3em), (max-width: 1376px) calc(50vw - 12em), 550px"
src="./images/original.jpg"
alt="Responsive image"
width="1243"
height="1500"
/>
</picture>
我有一个解决方法,它使用 CSS 而不是sizes
属性
img.styled {
width: 550px;
height: auto;
}
@media (max-width: 1376px) {
img.styled {
width: calc(50vw - 12em);
height: auto;
}
}
@media (max-width: 768px) {
img.styled {
width: calc(100vw - 3em);
height: auto;
}
}
<picture>
<img
srcset="
./images/original_s.jpg 100w,
./images/original_m.jpg 200w,
./images/original_l.jpg 550w
"
sizes="(max-width: 768px) calc(100vw -
3em), (max-width: 1376px) calc(50vw - 12em), 550px"
src="./images/original.jpg"
alt="Screenclip of Stefan's Twitter"
loading="lazy"
decoding="async"
width="1243"
height="1500"
class="styled"
/>
</picture>
我不喜欢这种变通方法。我很想看到这个与sizes
属性一起工作,但我不知道这是否可能。我已经制作了一个页面,您可以在其中看到解决方法(第一张图片)和原始 html(第二张图片)以及其他一些组合:https ://www.gijsvandam.nl/responsive-picture-element/
回购在这里https://github.com/gijswijs/responsive-picture-element
我很想知道是否有办法让它在没有 CSS 的情况下工作。
解决方案
推荐阅读
- ios - 定时器循环 - 不是 NSTimer - Swift
- windows - windows server 2016如何创建子域
- python - 如何编写适用于 Python 2 和 Python 3 的代码?
- java - 未找到可绘制资源
- graph - 如何编码/探索 DAG 的多个线性排序
- r - plot3d() - 如何将 z 轴表面颜色更改为热图颜色
- html - 需要汉堡移动菜单图标而不是文本
- haskell - 在 Haskell Stack 项目中构建 yesod/amazonka 依赖项时遇到问题
- javascript - POST 请求后,子组件不会重新渲染父组件
- css - Bootstrap 3 导航栏下拉菜单被删除