<picture>:picture 元素
Baseline Widely available
This feature is well established and works across many devices and browser versions. It’s been available across browsers since March 2016.
HTML <picture>
元素通过包含零或多个 <source>
元素和一个 <img>
元素来为不同的显示/设备场景提供图像版本。浏览器会选择最匹配的子 <source>
元素,如果没有匹配的,就选择 <img>
元素的 src
属性中的 URL。然后,所选图像呈现在<img>元素占据的空间中。
尝试一下
要决定加载哪个 URL,user agent 检查每个 <source>
的 srcset
、media
和 type
属性,来选择最匹配页面当前布局、显示设备特征等的兼容图像。
<img>
元素有两个目的:
- 描述图像的大小和其他属性及其呈现。
- 在所有的
<source>
元素提供的图片都不可用时提供备选图片。
<picture>
的常见使用场景:
-
艺术指导(Art direction)。针对不同
media
条件裁剪或修改图像(例如,在较小的显示器或图像的详细内容太多时显示较为图像的简单版本)。 -
遇到不支持的特定格式时,提供替代的图像格式。
备注:例如,像 AVIF 或 WEBP 这样的新格式具有诸多优点,但可能不受浏览器的支持。可以在图像文件格式和格式指南中找到支持的图像格式的列表。
-
通过加载最适合观看者显示的图像来节省带宽和提高页面加载速度。
如果要为高 DPI(Retina)显示提供更高像素密度的图像版本,请在 <img>
元素上使用 srcset
。这使得浏览器可以在节约流量模式下选择低像素密度版本,且不需要你编写明确的 media
条件。
内容分类 | 流内容,表述内容,嵌入内容。 |
---|---|
允许的内容 | 零或多个 <source> 元素,以及紧随其后的一个 <img> 元素,可以混合一些脚本支持的元素。 |
标签省略 | 不允许,开始标签和结束标签都不能省略。 |
允许的父元素 | 任何可以包含嵌入内容的元素。 |
允许的 ARIA roles | 无 |
DOM 接口 | HTMLPictureElement |
属性
这个元素只包含全局属性。
使用说明
你可以使用 object-position
属性调整元素框架内图像的位置,用 object-fit
属性控制图片如何调整大小来适应框架。
备注:在子 <img>
元素上使用这些属性,不是 <picture>
元素。
示例
这些示例演示了 <source>
元素的不同属性如何更改<picture>
中图像的选择。
media
属性
type
属性
规范
Specification |
---|
HTML Standard # the-picture-element |
浏览器兼容性
BCD tables only load in the browser
参考链接
<img>
元素<source>
元素- 在其框架内定位和缩放图片:
object-position
和object-fit