即在不同尺寸上显示不同大小的图片,大尺寸显示宽图,小尺寸窄图。
- <picture>
- <source media="(max-width: 799px)" srcset="elva-480w-close-portrait.jpg">
- <source media="(min-width: 800px)" srcset="elva-800w.jpg">
- <img src="elva-800w.jpg" alt="Chris standing up holding his daughter Elva">
- </picture>
<source>
元素包含一个media
属性,这一属性包含一个媒体条件——就像第一个srcset
例子,这些条件来决定哪张图片会显示——第一个条件返回真,那么就会显示这张图片。在这种情况下,如果视窗的宽度为 799px 或更少,第一个<source>
元素的图片就会显示。如果视窗的宽度是 800px 或更大,就显示第二张图片。srcset
属性包含要显示图片的路径。请注意,正如我们在<img>
上面看到的那样,<source>
可以使用引用多个图像的srcset
属性,还有sizes
属性。所以你可以通过一个 <picture>
元素提供多个图片,不过也可以给每个图片提供多分辨率的图片。实际上,你可能不想经常做这样的事情。</picture>
之前正确提供一个<img>
元素以及它的src
和alt
属性,否则不会有图片显示。当媒体条件都不返回真的时候(你可以在这个例子中删除第二个<source>
元素),它会提供图片;如果浏览器不支持 <picture>
元素时,它可以作为后备方案。不使用CSS和JS实现效果是因为会任意加载一张图片,这对响应式没有帮助。