火次果
火次果

暂无菜单项

首页/文章/技术文章/web前端/HTML5/
打开 MD 链接

写了三年 picture:真正用上的就这四个场景

发布于 2天前
2

picture 标签的文档翻过不少遍,真正在项目里用上的场景其实数得过来 🖼️。三年下来就四个,其余情况 img srcset 就够了,没必要把结构搞复杂。整理出来做个记录。

桌面上的手机与笔记本电脑
同一页面要在手机与桌面呈现不同构图,picture 才有用武之地

场景一:换构图

桌面端横幅图,到了手机上人物被裁得只剩一半。这种情况叫艺术方向,不是清晰度问题,srcset 解决不了。用 media 查询换 source,宽屏给横图,窄屏给方图。

场景二:新格式降级

<picture>
  <source srcset="a.avif" type="image/avif">
  <source srcset="a.webp" type="image/webp">
  <img src="a.jpg" alt="示例">
</picture>

浏览器遇到不认识的 type 会跳过整条 source,自动落到下一种格式 ✅。AVIF 体积小三成,这套写法让新格式敢上生产。

场景三:深色模式专用图

截图类、插画类图片在深色背景下发白刺眼。media 写 prefers-color-scheme: dark,配一套深色资源。拿 CSS 滤镜硬转的方案试过,照片直接偏色,不可靠 ⚠️。

场景四:高密度屏与性能组合

img 上保留 srcset 加 sizes 管清晰度,配合 decoding="async" 与宽高声明,Retina 屏清晰且不掉帧。首屏主图记得 loading 用 eager,别懒加载。

四个场景之外,单一图片多尺寸交给 img srcset,结构更轻,维护成本也低。

常见问题(FAQ)

picture 和 img srcset 怎么选?
只换清晰度用 img srcset 加 sizes;需要换构图、换格式、响应深色模式时才上 picture。
source 的 media 写法有限制吗?
必须是合法的 CSS 媒体查询。写法不合法时整条 source 被浏览器跳过,直接落到下一条。
AVIF 的浏览器支持度如何?
主流现代浏览器均支持,但旧版本与部分内嵌 webview 仍需要 webp 与 jpg 两级兜底。
深色模式能用 CSS 滤镜代替专用图吗?
不推荐。滤镜对照片类图片的转换效果不可控,偏色与对比度问题频发,专用深色资源才是稳定解。
picture 里的 img 还要写 alt 吗?
要。alt 只写在 img 上,source 元素不支持 alt。img 同时承担兜底与语义职责。
AVIF格式picture标签响应式图片深色模式适配艺术方向
支持作者
如果这篇内容对你有帮助,可以请作者喝杯咖啡
0 点赞
0 收藏
分享
0 讨论
反馈
0 / 600
细中粗
0 讨论
热门最新
总结
暂无总结
嗨,下午好!
所有的成功,都源自一个勇敢的开始
创作
社区
购物
会员
近期热门

暂无数据

火次果
火次果
首页
资迅中心
小店
AI导航
社区
所有的成功,都源自一个勇敢的开始
不辜负每一个勇敢的开始
关于FAQ协议
火次果 © 2026鲁ICP备2025164830号-1