picture标签是实现响应式图片艺术指导的核心方案,通过source元素按媒体条件或格式匹配不同构图的图片,img作为必需降级和语义承载。

picture 标签是实现响应式图片艺术指导(Art Direction)的核心 HTML 方案,它允许你为不同视口、设备像素比或媒体条件,主动指定最合适的图片资源,而不仅是缩放同一张图。这和仅用 img[srcset] 做分辨率切换有本质区别:art direction 关注的是“构图取舍”,比如在小屏上裁掉背景、突出人脸,在大屏上展示全景。
用 source 元素定义多套视觉方案
每个 source 可绑定独立的 media(媒体查询)或 type(MIME 类型),浏览器按顺序匹配第一个满足条件的 source,然后加载其 srcset 指定的图片(支持多尺寸/密度)。
- 优先写最具体的条件(如
min-width: 768px),再写兜底的media或无条件source -
type用于提供 WebP/AVIF 等现代格式,老浏览器自动跳过,回退到后面的img - 所有
source的srcset应使用语义一致但构图不同的图片——这才是 art direction
img 标签作为必需的降级与内容承载
picture 内必须包含一个 img 元素,它不只用于不支持 picture 的旧浏览器(如 IE),更是所有情况下的内容锚点:
使用 Puppeteer + Chrome 将 HTML 渲染为中文 PDF,自动处理图表等待、Tab 展开、动画、测高、白边消除、防分页,适用于看板、报表、网页和交互图表转 PDF。
-
img的src是最后兜底图(建议提供 JPEG/PNG 格式) -
img的srcset和sizes仍可启用,用于在匹配到该img时做分辨率适配 -
alt、width、height等语义和布局属性必须放在img上,source不支持这些
典型艺术指导场景示例
例如一张横幅图,在手机端需聚焦人物,在桌面端展示完整场景:
<picture><source media="(max-width: 480px)" srcset="hero-mobile-crop.jpg 1x, hero-mobile-crop@2x.jpg 2x"><source media="(min-width: 481px) and (max-width: 1023px)" srcset="hero-tablet-wide.jpg 1x, hero-tablet-wide@2x.jpg 2x"><source type="image/webp" srcset="hero-desktop-webp.webp 1x, hero-desktop-webp@2x.webp 2x"> @@##@@ </source></source></source></picture>
注意:三张 source 图不是简单缩放,而是分别裁剪/重排版后的独立图像文件。
配合 CSS 实现更精细控制
picture 解决的是“选哪张图”,但构图效果还需 CSS 配合:
- 用
object-fit: cover+ 固定宽高容器,确保不同比例图片填满且不拉伸 - 避免给
picture或source设样式;所有样式作用于内部img - 若需动态切换焦点区域(如 CSS mask 或 clip-path),需 JavaScript 监听
resize并更新img的style,但会失去预加载优势,慎用

前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!










