这里是使用Srcset with sizes的详细指南。
sizes 属性包含一个逗号分隔的列表。列表中的每一项都描述了图像相对于视口的大小。
将sizes 属性与srcset 结合使用可为浏览器提供足够的信息,让浏览器在看到HTML 中的<img> 标记后立即开始下载正确的图像,而无需等待样式表完成下载和解析。
我们为什么需要尺寸?
如果您想知道为什么浏览器不知道图像将呈现多大,checkout how the browser loads a web page。
语法:
<img src="image.jpg"
srcset="small.jpg 300w,
medium.jpg 600w,
large.jpg 900w"
sizes="(max-width: 300px) 100vw, (max-width: 600px) 50vw, (max-width: 900px) 33vw, 900px"
/>
sizes 中的每个逗号分隔项都有:
- 媒体条件,例如,
(max-width: 300px) - 它描述了屏幕可能处于的状态。(max-width: 300px) 表示视口宽度为 300 CSS 像素或更小。它类似于媒体查询,但有一些限制。您不能使用screen 或print。
- 一片空白。
- 媒体条件为真时图像元素的宽度。您可以提供绝对长度(px、em)或相对于视口的长度(vw),但不能提供百分比。
演示 - 带尺寸的 srcset
让我们通过现场演示来看看这一点 - https://imagekitio.github.io/responsive-images-guide/srcset-sizes.html
布局是这样的:
- 如果视口宽度超过 900 像素,则每张图片的宽度都固定为 225 像素。
- 最大 900 像素,每张图片占用 33vw,即总视口宽度的 33%。
- 最多 700 像素,每张图片占用 50vw,即总视口宽度的 50%。
- 最多 400px,每张图片占据 100vw,即整个视口宽度。
单个图像元素的 HTML 标记如下所示:
<img src="https://ik.imagekit.io/ikmedia/women-dress-1.jpg"
srcset="https://ik.imagekit.io/ikmedia/women-dress-1.jpg?tr=w-225 225w,
https://ik.imagekit.io/ikmedia/women-dress-1.jpg?tr=w-300 300w,
https://ik.imagekit.io/ikmedia/women-dress-1.jpg?tr=w-350 350w,
https://ik.imagekit.io/ikmedia/women-dress-1.jpg?tr=w-640 640w"
sizes="(max-width: 400px) 100vw, (max-width: 700px) 50vw, (max-width: 900px) 33vw, 225px">
让我们看看在不同的屏幕尺寸和 DPR 值下会发生什么 -