对于您的用例,您可以将srcset 与宽度描述符和sizes 属性一起使用。
srcset 属性定义了一个候选图像列表,并且您描述了每个图像的 宽度(以像素为单位):
srcset="image-640.jpg 640w, image-980.jpg 980w, image-1240.jpg 1240w, image-1900.jpg 1900w, image-2400.jpg 2400w"
sizes 属性描述了您希望显示此图像的大小。这是一个例子:
sizes="(min-width: 2400px) 2400px, 100vw"
这意味着,如果浏览器视口为 2400 或更大,您希望以 2400 像素显示,否则您希望以全视口宽度显示。
这看起来像这样:
<img
srcset="image-640.jpg 640w, image-980.jpg 980w, image-1240.jpg 1240w, image-1900.jpg 1900w, image-2400.jpg 2400w"
sizes="(min-width: 2400px) 2400px, 100vw />
如果您想这样做,则应使用另一个答案中描述的图片元素,称为艺术指导。这意味着您要使用不同的图像(按比例、裁剪或类似的方式),在这种情况下,顺序确实很重要。浏览器获取与媒体查询匹配的第一个source。
<picture>
<source media="(min-width: 1024px)" srcset="desktop.png">
<source media="(min-width: 480px)" srcset="tablet.png">
<source srcset="mobile.png">
<img src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==" alt="A photo of London by night">
</picture>
Chrome、Firefox 和 Safari 9(不是 8)支持srcset 和 sizes。要添加对 Safari 8 和 IE 的支持,您可以使用 polyfill(https://github.com/scottjehl/picturefill 或 https://github.com/aFarkas/respimage)。