如果您有一个
<picture>
元素,其图像源在不同的断点处具有不同的宽高比,那么通过在 CSS 中使用宽高比和媒体查询来最小化 CLS 的最佳方法是什么?
对于
<picture>
,只要每个 <source>
图像在响应式图像片段中具有相同的宽高比,您就应该 fine:
<img width="1000" height="1000"
src="puppy-1000.jpg"
srcset="puppy-1000.jpg 1000w,
puppy-2000.jpg 2000w,
puppy-3000.jpg 3000w"
alt="Puppy with balloons"/>
对于每个
<picture>
具有不同纵横比的 <source>
,浏览器正在等待为每个 <source>
推荐宽度/高度的标准化,以用于艺术指导用例:
<picture>
<source srcset="https://via.placeholder.com/600x279" media="(max-width: 599px)" width="600" height="279">
<source srcset="https://via.placeholder.com/1500x300" media="(max-width: 991px)" width="1500" height="300">
<img src="https://via.placeholder.com/1500x300" width="1500" height="300">
</picture>
同时,您可以通过
padding-top CSS hacks提供
height
,每个 <picture>
断点具有不同的媒体查询。
支持 dimension 属性的源元素是 now HTML 标准的一部分 — https://html.spec.whatwg.org/multipage/embedded-content.html#the-source-element
对于
<picture>
的艺术指导用例,其中每个 <source>
具有不同的纵横比,每个 <source>
都可以提供自己的 width
和 height
值。
<picture>
<source srcset="https://via.placeholder.com/600x279" media="(max-width: 599px)" width="600" height="279">
<source srcset="https://via.placeholder.com/1500x300" media="(max-width: 991px)" width="1500" height="300">
<img src="https://via.placeholder.com/1500x300" width="1500" height="300">
</picture>