CSS 图像动画模块 第一版

W3C 首次公开工作草案,

关于本文档的更多细节
本版本:
https://www.w3.org/TR/2026/WD-css-image-animation-1-20260409/
最新发布版本:
https://www.w3.org/TR/css-image-animation-1/
编辑草案:
https://drafts.csswg.org/css-image-animation-1/
以前的版本:
历史记录:
https://www.w3.org/standards/history/css-image-animation-1/
反馈:
CSSWG 问题仓库
编辑:
Florian Rivoal
建议对本规范进行修改:
GitHub 编辑器

摘要

本 CSS 模块提出了控制动画图像渲染的机制。

CSS 是一种用于描述结构化文档(如 HTML 和 XML)在屏幕、纸张等上的渲染的语言。

本文档状态

本节描述了本文件在发布时的状态。 当前 W3C 出版物列表 及本技术报告的最新修订版 可在W3C 标准与草案索引中找到。

本文件由CSS 工作组 作为首次公开工作草案发布, 进展遵循推荐标准流程。 以首次公开工作草案身份发布 并不意味着 W3C 及其成员的认可。

这是一个草案文档, 可能会随时被更新、替换或废止。 除作为开发中工作外,不应引用本文件。

请通过 在 GitHub 提交 issue(优先推荐)反馈, 标题中请包含规范代码“css-image-animation”, 如: “[css-image-animation] …意见摘要…”。 所有问题和评论都会被存档。 另外,也可发送反馈到(存档) 公开邮件列表www-style@w3.org

本文件受 2025年8月18日 W3C流程文件 管辖。

本文件由按照 W3C 专利政策 运作的小组制作。 W3C 维护着与该小组交付物相关的 公开专利申明列表; 页面还包含专利披露说明。 若个人实际知晓自己认为包含 必要专利权利要求 的专利,则必须按 W3C 专利政策第6节 披露相关信息。

1. 引言

本节为非规范性内容。

动画图像(由[GIF][PNG][WebP]等支持)在网络中被广泛使用。 默认情况下,用户代理会自动播放这些图片, 这可能会让用户觉得突兀, 尤其是在单页包含多张图片(如图像画廊)的场景下, 并且违反了WCAG 2.2 § 成功标准 2.2.2 暂停、停止、隐藏。 当前, 站点作者对此没有控制权。

这导致用户希望能控制这些动画。 但由于用法多样, 存在广泛的用例和期望的UI及用户体验, 所以仅将其作为自动或选择加入的用户代理特性是不足够的

为给用户提供最佳体验, 网站需要能分别为不同动画图片的场景, 控制其播放体验。

本规范提议引入一个 CSS 属性(image-animation) 和一个伪类(:animated-image), 以帮助作者控制动画、 并能将此控制及相关的UI 关联到相关元素上。

关于动机和其它被考虑过的替代方案, 可参见单独维护的 说明文档 及相关展示

本规范内容不会限制用户代理为用户 提供全局控制图片动画的设置, 例如一键将所有动画图片改为静态图片的选项。

2. 控制图片动画:image-animation 属性

名称: image-animation
值: normal | paused | stopped | running
初始值: normal
适用对象: 内容图片和 带有装饰图片的元素
可继承:
百分数: n/a
计算值: 如指定
规范顺序: 按语法
动画类型: 离散

该属性允许作者控制 动画图片 以动画状态显示 或保持暂停。

此属性会影响 内容图片装饰图片。 当一个元素包含多个装饰图片 (如多重背景图片或边框图像), 或者既有内容图片又有一个或多个装饰图片时, 该元素上的属性计算值会同时影响它们。

注:因此无法只暂停 元素上的装饰图片动画, 而让同一元素的内容图片动画继续, 反之亦然。

对于非动画图片, 此属性的不同值无效。 此属性同样不影响视频编程生成图片

当此属性应用于根元素时, 对背景装饰图片的影响会传递到画布背景中。

注:由于历史原因, background属性不仅从根元素继承, 也会从 HTML body 元素继承。 但较新的属性如image-animation仅从 根元素传播。 设置于 body 不会生效, 即使背景属性设置在这里。

normal
动画图片的动画按正常方式运行, 以图片格式和宿主语言决定。

此外, 所有具有相同绝对URL、 相同图片数据且 image-animation计算值为 normal动画图片 必须以同一时间线为组同步渲染, 该时间线开始于组中最早添加的时间。

注:上述要求基于[HTML]渲染期望,在 HTML § 15.4.2 图像中定义。 由于[HTML]通常不要求 用户代理以特定方式展示文档,因此没强制该行为。 本规范则要求如此。

stopped
动画图片 渲染为静态图片: 用户代理不得播放其任何动画。 若图片包含封面帧, 则必须使用该帧; 否则显示动画初始状态的图片。
paused
用户代理不得运行 动画图片中的动画, 并必须继续显示 本值应用时图像的状态, 实现动画暂停效果。

如果在应用该值前动画未播放, 行为与stopped 相同。

running
normal类似, 动画图片的动画正常运行, 由图片格式及宿主语言决定。

但动画的时间轴按元素单独划分: 在同一元素的内容图片装饰图片中, 具有相同绝对URL、 相同图片数据且 image-animation计算值为 running动画图片, 必须在本元素内同步渲染成同一时间线为组, 该组与其它元素的图片时间线独立。

若在计算值为running 时有图片加入到元素, 则时间线自该组中最早加入时开始计时。

若元素因 display: none 后新创建或显现,有图片已添加并且 image-animation 已为running, 那么时间线从元素参与布局时开始。

若此属性由其他值切换为running, 则时间线起点应 保证动画从切换时的状态继续。

作者可借助此属性结合 prefers-reduced-motion 媒体特性抑制非必要图像动画。 这里,装饰图片 被处理为静态, 而 img 元素则保持动画。
:root { /* 通过继承传播到整个文档 */
  image-animation: paused;
}
img {
  image-animation: normal;
}
某个 HTML 页面包含多个 img 元素, 展示同一张图片 (相同绝对 URL 和图片数据), 且均设置了image-animation: normal

其中一个元素临时将image-animation属性 切换到paused, 使其图片动画暂停。 其它图片不受影响, 动画继续播放。

image-animation属性的 paused元素 之后被改回running。 此时,该图片动画恢复播放, 与其它图片的动画进度无关, 因此会不同步。

再后来,该元素的image-animation属性 被设置为normal。 这时图片动画会立刻重新和其它实例同步。

image-animation属性不仅影响光栅图片格式, 也影响矢量图片, 包括 SVG(见[SVG2]。 不过,仅适用于作为内容图片装饰图片加载的独立 SVG 资源, 不包括内联到 HTML 的 svg 元素。 (但若设置于 svg 元素本身, 则可继承, 并影响其通过 SVG image 元素加载的 动画型 内容图片。 )

3. 区分动画图片::animated-image 伪类

:animated-image伪类表示已加载内容图片元素 其中包含动画图片。 若要与animated-image伪类匹配, 图像不仅需为支持动画的格式, 还必须真的是一张动画图片。

对于非内容图片的元素, animated-image伪类永不匹配。

作者可利用此伪类 对可暂停图片选择性地提供用户界面, 使用户能够播放这些图片。

在下面这个简易示例中, 可动画显示的图片初始为暂停状态, 并应用滤镜让它们显得灰暗。 当悬停或聚焦至图片时, 滤镜被移除, 并允许图片播放动画。

img:animated-image {
  image-animation: paused;
  filter: grayscale(10%) contrast(50%) brightness(80%);
}
img:animated-image:hover,
img:animated-image:focus {
  filter: none;
  image-animation: running;
}
构建用于控制图片动画的UI时, 作者应考虑键盘用户的需求, 避免仅依赖鼠标交互实现功能。
上述示例中, 不仅悬停图片会触发播放, 聚焦图片也会触发。 若要完整实现,需要让可动画图片获得焦点能力。 这可通过如下代码实现:
function setImageFocusability(event) {
  var img = event.target;
  if (img.matches(":animated-image") {
    img.tabIndex = 0;
  } else {
    img.removeAttribute("tabindex");
  }
}
document.querySelectorAll("img").forEach( (i) => {
  setImageFocusability({target: i });
  i.addEventListener('load', setImageFocusability);
  i.addEventListener('error', setImageFocusability);
});

是否与:animated-image匹配不受 当前图片播放状态和image-animation值影响。 但若用户代理全局禁用图片动画, 即使本可动画的图片也会视为静态图片,不会匹配。

4. 术语

静态图片
仅显示单帧作为最终观看体验的图片。

JPEG 图片是一种静态图片

动画图片
最终观看体验需顺序显示多帧的图片, 可以循环也可以不循环。

动画 PNG 图片或动画[GIF]图片 都是动画图片

仅支持渐进渲染或多遍加载 并不属于动画

内容图片
宿主语言中表示静态图片动画图片的元素, 不包括视频编程图片

img [HTML] 元素, 包括嵌套于 picture 元素时; object [HTML] 元素(如果其表示一个图片); 以及 image [SVG2] 元素 都是内容图片

当且仅当它作为封面帧时, HTML video 元素 被视为内容图片

装饰图片
通过 CSS 插入文档渲染流程的图片, background-imageborder-image 等属性添加。
视频

宿主语言中表示动态画面(可带音频或不带音频), 通常甚至带有交互控件 (播放、暂停、定位、音量、全屏等), 也可有字幕或说明文字的元素。

注:从文件格式角度, 视频动画图片概念重叠广泛, 原则上未必能严格区分。 此处区别基于作者意图, 取决于文档中选用的元素。

video [HTML] 元素代表一个 视频

假定用户代理两种用法皆支持, 同一个 video/mp4 文件 如果通过 video 元素展示就是视频, 如果用作 CSS background-image,则为装饰图片
编程图片
通过宿主语言 API 编程生成的图片, 而非外部资源加载图片。

canvas [HTML] 元素代表 编程图片

封面帧
一些动画图片 格式允许创作者指定一个静态图片, 在本规范中称为封面帧, 用于动画未播放时显示, 明确区别于动画的初始状态。

5. 无障碍性考虑

本节为非规范性内容。

6. 隐私 考虑

本节为非规范性内容。

image-animation属性允许跨域控制图片动画, 且不会泄漏图片是否可动画的信息。 属性计算值不会因此变更。 running值对动画图片静态图片有不同表现, 但页面本身观察不到这些差异。

不过,:animated-image伪类会暴露 某个内容图片 是否为动画静态, 这是页面本无法跨域知晓的信息。 虽可通过 CORS 限制, 但本规范选则不做限制,原因如下:

7. 安全 考虑

本节为非规范性内容。

本规范据悉不会引入新的安全问题。

一致性

文档约定

一致性要求通过描述性断言和 RFC 2119 术语结合进行表达。本规范的正式部分中的关键词“必须(MUST)”、 “禁止(MUST NOT)”、“需要(REQUIRED)”、“应当(SHALL)”、 “不得(SHALL NOT)”、“应该(SHOULD)”、“不应(SHOULD NOT)”、 “推荐(RECOMMENDED)”、“可以(MAY)”和“可选(OPTIONAL)”均按 RFC 2119 的说明理解。 不过,为了可读性,本规范中的这些单词并非全部大写。

除非明确标记为非规范性内容、示例和注释外,规范的全部文本均为规范性内容。[RFC2119]

本规范中的示例以“例如(for example)”引入, 或通过 class="example" 设置,样例如下:

这是一个信息性示例。

信息性说明以“注(Note)”开头,并使用 class="note" 标记,例如:

注,这是一个信息性说明。

建议性内容是规范性部分,采用特殊样式以引起注意,使用 <strong class="advisement"> 标记,例如: 用户代理必须为无障碍提供替代方案。

一致性类别

本规范定义了三种一致性类别:

样式表
一个CSS 样式表
渲染器
一个用户代理(UA), 能解释样式表语义并渲染 使用样式表的文档。
编辑工具
一个用户代理(UA), 用于编写样式表。

如果样式表中使用本模块定义语法的语句, 均符合通用 CSS 语法和本模块中每个特性的具体语法, 则该样式表符合本规范。

如果渲染器除按照合适规范解释样式表外, 还能通过正确解析和渲染文档而支持本规范定义的全部特性, 则该渲染器符合本规范。但由于设备限制, 用户代理无法正确渲染某些文档并不会导致不符合规范。(例如,UA 并不要求在单色显示器上显示彩色。)

如果编辑工具生成的样式表在通用 CSS 语法和本模块各特性的语法下语法正确, 且符合本模块描述的其它所有样式表一致性要求, 则该编辑工具符合本规范。

部分实现

为使作者能够利用前向兼容的解析规则分配回退值,CSS 渲染器必须 将所有不具备可用支持级别的 at-规则、属性、属性值、关键字和其他语法结构都视为无效(并 适当忽略)。特别是,用户代理不得在单个多值属性声明中仅选择性忽略不支持的组件值但保留支持值:如任何值被视为无效 (如所有不支持的值),则 CSS 规定整条声明被忽略。

不稳定和专有特性的实现

为避免与未来稳定的 CSS 特性冲突, CSS 工作组建议遵循最佳实践来实现非稳定特性及专有扩展

非实验性实现

一旦规范达到候选推荐标准阶段, 即可进行非实验性实现,且实现者应当发布任何经证明正确实现且达到 CR 水平的特性的非前缀实现。

为确保和维持 CSS 不同实现间的互操作性, CSS 工作组要求非实验性的渲染器在发布未加前缀的任何 CSS 特性实现前,向 W3C 提交实现报告(如有需要还应一并提交对应测试用例)。 向 W3C 提交的测试用例将经由 CSS 工作组审查和修订。

关于提交测试用例与实现报告的进一步信息, 可在 CSS 工作组网站 https://www.w3.org/Style/CSS/Test/ 查阅。 有疑问可发至 public-css-testsuite@w3.org 邮件列表。

索引

本规范定义的术语

引用定义的术语

参考文献

规范性引用

[CSS-BACKGROUNDS-3]
Elika Etemad; Brad Kemper. CSS Backgrounds and Borders Module Level 3. 2024年3月11日. CRD. 网址: https://www.w3.org/TR/css-backgrounds-3/
[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS Cascading and Inheritance Level 5. 2022年1月13日. CR. 网址: https://www.w3.org/TR/css-cascade-5/
[CSS-DISPLAY-4]
Elika Etemad; Tab Atkins Jr.. CSS Display Module Level 4. 2025年11月6日. WD. 网址: https://www.w3.org/TR/css-display-4/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 4. 2024年3月12日. WD. 网址: https://www.w3.org/TR/css-values-4/
[HTML]
Anne van Kesteren; 等. HTML 标准. 现行标准. 网址: https://html.spec.whatwg.org/multipage/
[RFC2119]
S. Bradner. 在 RFC 中用于指明需求级别的关键词. 1997年3月. 最佳当前实践. 网址: https://datatracker.ietf.org/doc/html/rfc2119
[SVG2]
Amelia Bellamy-Royds; 等. 可缩放矢量图形 (SVG) 2. 2018年10月4日. CR. 网址: https://www.w3.org/TR/SVG2/

资料性引用

[GIF]
图形交换格式. 1990年7月31日. 网址: https://www.w3.org/Graphics/GIF/spec-gif89a.txt
[IMAGE-ANIMATION-EXPLAINER]
Florian Rivoal; Lea Verou. CSS 图像动画说明文档. 网址: https://drafts.csswg.org/css-image-animation-1/explainer
[IMAGE-ANIMATION-TALK]
Lea Verou; Florian Rivoal. 我们需要能够在 Web 平台控制图像动画!. 网址: https://github.com/webplatformco/project-image-animation/tree/main/image-animation-property
[MEDIAQUERIES-5]
Tab Atkins Jr.; 等. 媒体查询 Level 5. 2026年2月19日. WD. 网址: https://www.w3.org/TR/mediaqueries-5/
[PNG]
Chris Lilley; 等. 便携网络图形 (PNG) 规范(第三版). 2025年6月24日. 正式推荐. 网址: https://www.w3.org/TR/png-3/
[WCAG22]
Michael Cooper; 等. 网络内容可访问性指南 (WCAG) 2.2. 2024年12月12日. 正式推荐. 网址: https://www.w3.org/TR/WCAG22/
[WebP]
J. Zern; P. Massimino; J. Alakuijala. WebP 图片格式. 2024年11月. 资料性. 网址: https://www.rfc-editor.org/rfc/rfc9649

属性索引

属性名 初始值 适用对象 可继承 百分比 动画类型 规范顺序 计算值
image-animation normal | paused | stopped | running normal 内容图片和包含装饰图片的元素 n/a 离散 按语法 如指定