STATUS IS UP网站优化 Wiki
18加速
性能与交付 / 加速

使用 srcset 和 sizes 的响应式图像

帮助浏览器为实际布局槽位选择匹配的图像,而不是向每位访问者发送一个过大的原始文件。

使用 srcset 和 sizes 的响应式图像 — 可视化指南
阅读
8 分钟
来源
6
重新验证
2027-03-27
已审阅
网页性能与无障碍评审员
简短回答

从决策开始。

当同一图像在响应式布局中以不同呈现宽度出现时,请使用 srcset 和 sizes。srcset 列出图像候选项及其固有宽度;sizes 描述在各布局条件下图像槽位的预期宽度。浏览器将使用该源大小估计值与显示密度、缩放和其他条件一起选择候选图像。这样,小型移动卡片就可以避免下载桌面原始图像,而在大屏或高密度显示器上则可以在可用时选择更清晰的候选图像。

从组件的 CSS 布局入手,而不是基于通用设备列表。测量每个断点下的槽位,生成真实的候选文件,并让 sizes 反映该槽位。当且仅当 CSS 槽位固定时才使用 x(密度)描述符。需要在小屏幕上更改裁切而不是仅缩小文件时,使用 picture。使用空缓存重新加载(Empty Cache And Hard Reload)来验证实际请求。此类主动交付优化可在发布前减少可避免的图像传输,但不能保证速度、可用性或图像托管可靠性。

可视化指南

把工作看作一个系统。

使用此地图在执行具体策略前将文章中的决策联系起来。

SIU加速
01选择正确的模式
02了解 sizes 如何指导选择
03从实际布局推导候选文件
04对构图进行艺术导向时使用 picture
01

选择正确的模式

分辨率切换(resolution switching)保持构图不变,并提供若干文件宽度,是产品照片、文章图示和卡片的常见模式。当呈现宽度随布局变化时,请使用诸如 480w 或 1200w 的宽度描述符。这个数字表示文件的真实像素宽度,而不是目标手机宽度或 CSS 指令。

密度切换(density switching)用于固定 CSS 槽位,为高密度显示提供更多源像素。其描述符为 1x、1.5x 或 2x,适用于例如始终为 160 CSS 像素宽的徽标或图标。不要在同一个 srcset 中混合宽度(w)和密度(x)描述符。

流体槽位

当组件会放大或缩小时,使用带 sizes 的 w 描述符。

固定槽位

仅当呈现的 CSS 大小稳定时,使用 x 描述符并省略 sizes。

02

了解 sizes 如何指导选择

使用宽度描述符时,浏览器在下载图像之前会评估 sizes。每一项将可选的媒体条件与一个长度配对。第一个匹配的条件提供源大小;最后一个无条件的长度作为回退。sizes 是选择提示,而不是 CSS 规则。

浏览器将该源大小与候选图像宽度进行比较以计算有效密度,并可能还会考虑显示密度、缩放和网络条件。浏览器并非必须选择数学上最接近的文件名。请提供真实的候选项和可信的槽位估算;最终选择仍由用户代理(浏览器)决定。

顺序很重要

第一个匹配的媒体条件生效,因此按能保证第一个匹配正确的顺序编写列表。

避免一刀切的 100vw

将桌面上三分之一宽的卡片描述为视口宽度可能触发不必要的大候选图像。

03

从实际布局推导候选文件

对组件而非页面做清单。Hero、编辑插图、产品画廊、搜索缩略图和页脚徽标通常具有不同的槽位宽度。为每个组件记录窄端和最大呈现宽度、纵横比、裁切行为以及是否出现在首屏。

在组件的有意义槽位范围周围生成宽度,当细节需要高密度渲染时提供更大的选项。几乎相同的文件会增加构建和缓存复杂度;只在极小和极大文件之间存在明显差异时才折衷。实际测试生成的 URL,而不要假设图像转换一定有效。

保留一个有效的 src 备用项以及与所交付比例匹配的 width 和 height 值。它们预留空间,但不会阻止响应式 CSS 更改最终尺寸。

真实的描述符

标记为 800w 的候选项必须真实地具有 800 像素宽。

组件契约

在模板和设计更改时,与槽位和候选计划保持同步。

04

对构图进行艺术导向时使用 picture

艺术导向改变的是构图,而不仅仅是文件大小。宽幅风景照片在窄屏上可能需要更紧的纵向裁切以保持主体可见。picture 元素可为媒体条件提供特定来源选项,最后保留一个 img 作为回退。浏览器会考虑每个 source 的 media、type 和 srcset 信息;img 承载替代文本、尺寸和回退行为。

为每个裁切准备编辑和无障碍审核。移动裁切可能会移除产品细节或替代文本中提到的人物。把 alt 放在 img 上,描述图像传达的信息或功能。仅对真正装饰性的图像使用 alt="";对于链接或按钮图像,应描述动作而非仅外观。当构图不变时不要引入 picture:普通基于宽度的 srcset 更简单。

良好用例

复杂的桌面 Hero 需要为手机提供一个独立的纵向裁切。

格式来源

picture 的 source 可提供 type 提示,同时保留一个广泛可用的 img 回退。

05

避免代价高的加载与标记错误

常见浪费是将 sizes="100vw" 复制到每个图像。这对窄屏全宽图可能合适,但不适用于有限宽度容器或桌面卡片。相反的失败是 redesign 后 sizes 过时。CSS 和 sizes 必须同时更改。

不要对首屏重要图像使用懒加载(lazy-load)。建议对下折叠(below-the-fold)图像使用懒加载,并对可视 Hero 保持 eager。fetch priority 可以提升真正关键图像,但广泛的高优先级或预加载规则会损害性能。不应依赖文件名或缓存结果作为证明。

冷缓存回归

CMS、代理或缓存可能会掩盖错误的描述符或意外的图像请求。

图像中的文本

不要让重要页面文字仅依赖某个艺术导向裁切。

06

测试请求、裁切与修复

在布局变更宽度下测试代表性页面,包括网格断点的上方和下方。包含高密度设置、宽桌面和会改变槽位的状态。确认呈现尺寸、裁切、替代文本和视觉清晰度。

在 Chrome DevTools 中,打开 Network(网络)面板,禁用缓存重载或使用 Empty Cache And Hard Reload,过滤图像请求并检查 URL、传输大小、头信息、发起者和时序。使用节流(throttle)来揭示延迟或浪费工作。记录视口、设备像素比、槽位、候选项、传输字节和预期结果。

当模板、断点、CDN 或资源管线更改时,把这当作发布门控。针对性修复:更正 sizes、修正描述符、重新生成裁切、恢复回退或移除不必要的 preload。修复后在空缓存重载下重新测试。

观察而非推断

Network 面板记录了实际请求的候选项。

物质限制

此步骤验证图像交付行为,而不是源站容量、CDN 可用性或整体正常运行时间。

07

作为 SIU 弹性控制来应用

响应式图像可以减少可避免的传输,但无法保证请求成功。源站错误、不可用的转换、第三方托管和 CDN 故障需要独立的连续性与恢复计划。

对于 SIU,请使用测试记录尽早捕获交付回归,识别负责的模板或转换规则,并在上线前进行最小安全修正。将此与可用性预检和回滚计划配对。

归责

为每一次失败的选择检查指派组件与图像管线负责人。

行动 / 验证

你的实用待办指南。

  1. 01

    为每个组件分类

    标注其为流体、固定槽位、艺术导向、装饰性、功能性或关键可见内容。

    验证: 清单记录槽位范围、裁切规则和负责人。
  2. 02

    测量槽位

    在接近生产的网格上检查窄、中、宽三态。

    验证: 记录的 CSS 盒子宽度包含上限、间隙和侧边栏。
  3. 03

    选择描述符

    对流体槽位使用 w + sizes;对固定槽位使用 x;不要混合。

    验证: 每个 srcset 仅使用一种描述符类型。
  4. 04

    按 CSS 编写 sizes

    使用首匹配条件和描述槽位的无条件回退。

    验证: 在每个测试视口中,匹配值可信。
  5. 05

    验证资源

    检查每个候选文件是否存在且与声明的固有宽度匹配。

    验证: 直接请求返回预期文件并有有效回退。
  6. 06

    预留空间

    提供匹配的 width 与 height 值并使用保持比例的响应式 CSS。

    验证: 图像加载不会引起可避免的周边内容位移。
  7. 07

    审查艺术导向

    检查每个媒体特定裁切及其 img 的替代文本。

    验证: 重要主体保持可见且替代文本准确。
  8. 08

    有意识地设置优先级

    对折叠下的图像使用懒加载;避免广泛的高优先级和 preload 规则。

    验证: 真正的可见 Hero 能及时请求且不被不必要的竞争影响。
  9. 09

    捕获冷缓存证据

    使用 DevTools 的图像过滤、禁用缓存的重载和代表性视口。

    验证: 发布证据记录所选候选、槽位、传输大小和裁切。
  10. 10

    制定修复计划

    为模板和图像管线变更指派有针对性的修复或回滚。

    验证: 每次失败都有负责人并通过修复后的空缓存重载验证成功。
讨论主题

比较各种权衡,而不是私有数据。

与团队或网站所有者社区一起使用这些提示。共享方法与经验,但切勿粘贴凭证、客户记录或非公开的基础设施细节。

  1. 01

    你站点上哪个组件的已下载像素与其通常呈现槽位之间差距最大,如何安全地测量它?

  2. 02

    你的设计师、CMS 负责人和前端团队如何决定何时将移动裁切视为艺术导向而非仅仅缩放?

  3. 03

    在发布审查期间,哪些证据能让响应式图像回归的批准或回滚变得简单,而无需共享客户数据?

热门 / 权威资源

打开来源材料。

WHATWGImages in the HTML Standard ↗

关于描述符、源大小选择、回退和浏览器选择的主要规则。

已审阅 2026-09-27
MDN Web DocsUsing responsive images in HTML ↗

关于 srcset、sizes、密度切换、艺术导向和测试的实用指南。

已审阅 2026-09-27
web.devResponsive images ↗

Google 提供的关于尺寸、加载、描述符和布局约束的指导。

已审阅 2026-09-27
MDN Web Docspicture HTML picture element ↗

关于 media 与 type 选择、艺术导向、sizes 与回退的参考。

已审阅 2026-09-27
Chrome for DevelopersInspect network activity ↗

关于请求、传输、节流、过滤和空缓存重载的操作说明。

已审阅 2026-09-27
W3C Web Accessibility InitiativeImages Tutorial ↗

关于有意义、装饰性、功能性与文本型图像的无障碍与设计指导。

已审阅 2026-09-27

来源政策。 关于响应式图像语法和浏览器选择的断言基于下文列出的官方标准和文档。在发布前,请在站点的真实模板上验证标记、候选宽度和呈现布局。

快速说明

常见问题。

每次使用 srcset 都需要 sizes 吗?

当使用宽度描述符(w)时需要 sizes,因为浏览器需要源大小估算来处理流体槽位。固定大小的密度 srcset 使用 x 描述符,不需要 sizes。切勿在同一 srcset 中混合这两种描述符类型。

sizes 会改变图像的 CSS 宽度吗?

不会。sizes 仅为下载前的选择提示。呈现框的大小由 CSS 和组件布局决定,这就是为什么布局变化时必须维护 sizes。

每个响应式图像都应使用 picture 吗?

不需要。若构图在不同尺寸下不变,使用基于宽度的 srcset 更为合适。只有在某个媒体条件需要不同裁切或需要特定格式的来源时,才使用 picture,同时保留可用的 img 回退。

Status Is UP Editorial Team · 可用性保障编辑组(Uptime Enablement Editors)

由 网页性能与无障碍评审员 审阅。发布于 2026-09-27;更新于 2026-09-30。