CSS 快照 2024

W3C 小组备忘

关于本文件的更多信息
此版本:
https://www.w3.org/TR/2025/NOTE-css-2024-20250225/
最新发布版本:
https://www.w3.org/TR/css-2024/
编辑草案:
https://drafts.csswg.org/css-2024/
历史记录:
https://www.w3.org/standards/history/css-2024/
反馈:
CSSWG 问题仓库
编辑者:
Tab Atkins Jr. (Google)
Elika J. Etemad / fantasai (Apple)
Florian Rivoal (受邀专家)
Chris Lilley (W3C)
(受邀专家)
建议为本规范编辑内容:
GitHub 编辑页面

摘要

本文档将构成 2024 年 Cascading Style Sheets (CSS) 当前状态的所有规范汇集为一个定义。主要受众是 CSS 实现者,而非 CSS 作者,因为该定义所包含的模块以规范的稳定性为依据,而非 Web 浏览器的采用率。

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

本文档状态

本节描述了本文件在发布时的状态。当前 W3C 出版物和本技术报告的最新修订版可在 https://www.w3.org/TR/ 的 W3C 技术报告索引中找到。

本文档由 CSS 工作组Note track 的形式发布为小组备忘。小组备忘不代表 W3C 及其成员的认可。

请通过在 GitHub 提交 issue(推荐)反馈意见,标题中请包含规范代码“css-2024”,如:“[css-2024] …评论摘要…”。所有 issue 和评论均已归档。或者,也可以将反馈发送到(已归档)公开邮件列表 www-style@w3.org

本文档受 2023 年 11 月 3 日 W3C 流程文档 管辖。

2020 年 9 月 15 日 W3C 专利政策 对本文件不施加任何许可要求或承诺。

本文档代表了 2024 年 CSS 的状态。

1. 引言

当第一份 CSS 规范发布时,所有 CSS 内容都包含在一份文档中,该文档定义了 CSS Level 1。CSS Level 2 也是通过一份多章节文档来定义的。然而,在 CSS 超过 Level 2 之后,CSS 工作组选择采用模块化的方法,每个模块定义 CSS 的一部分,而不是定义一个单一的整体规范。这将规范拆分为更易管理的块,并允许对 CSS 进行更及时、渐进的改进。

由于不同的 CSS 模块具有不同的稳定性级别,CSS 工作组选择发布此概要文件,以定义截至 2024 年层叠样式表(CSS)的当前范围和状态。

1.1. 什么是 CSS?

层叠样式表(CSS)
CSS 是一种用于编写样式表的语言,旨在描述结构化文档(如 HTML 和 XML)在各种媒介上的呈现方式。CSS 用于描述源文档的表现,通常不会改变其文档语言所表达的底层语义。
样式表
一组指定文档呈现方式的规则。样式表由作者编写,由用户代理解释,以向用户呈现文档。
源文档
应用一个或多个样式表的文档。源文档的结构和语义通过文档语言(如 HTML、XHTML 或 SVG)进行编码。
作者
作者是编写文档及其相关样式表的人。创作工具是会生成样式表的用户代理
用户
用户是与用户代理交互以查看、听取或以其它方式使用文档的人。
用户代理(UA)
用户代理是任何代表用户解释文档及其相关样式表的程序。用户代理可以显示文档、朗读文档、打印文档、将文档转换为其他格式等。对于 CSS 规范而言,用户代理指的是支持并解释本规范中定义的层叠样式表(CSS)的代理。

1.2. 背景:W3C 流程与 CSS

本节为非规范性内容。

W3C 流程中,推荐轨道(Recommendation-track)文档会经历三个稳定性阶段,简述如下:

工作草案(WD)

这是 W3C 规范的设计阶段。工作组会根据内部和外部反馈不断迭代规范。

首个官方工作草案被称为“首次公开工作草案”(FPWD)。在 CSSWG 中,发布 FPWD 表明整个工作组已同意开展该模块的工作,范围大致与编辑草案中的提案一致。

进入下一个阶段有时被称为“最后征求意见工作草案”(LCWD)阶段。当我们已解决所有已知问题且没有进一步进展空间时,CSSWG 会将工作草案推进。此时需要通过测试和实现反馈来获得更多意见。

“最后征求意见”会为报告未解决问题设定截止日期,并要求工作组专门跟踪并处理反馈。意见处理文档(Disposition of Comments, DoC)会随更新草案一同提交给主管领导审批,以证明已经获得广泛审查和认可。

候选推荐标准(CR)
这是 W3C 规范的测试阶段。此阶段的重点是使用测试和实现来测试规范本身,而不是测试实现。这个过程通常会发现更多规范问题,因此候选推荐标准会随着实现和测试反馈不断调整,但通常比设计阶段(WD)要少得多。

要退出 CR 阶段,必须证明每一特性有两个正确且相互独立的实现,因此本阶段工作组会构建测试套件并生成实现报告。

进入下一个阶段为“推荐提案”(PR)。在此阶段,W3C 会员委员会须批准过渡为 REC。

推荐标准(REC)
这是 W3C 规范的最终状态,代表维护阶段。此时,工作组只维护勘误文档,并偶尔发布整合勘误的修订版规范。

编辑草案实际上是编辑者个人工作副本的实时版本。它可能反映也可能不反映工作组共识,有时甚至自相矛盾。(由于 W3C 的发布流程繁琐而耗时,编辑草案通常是规范最权威(最新)的参考版本。目前正在努力减少发布阻力,以便官方草案能定期更新,编辑草案能恢复其最初作为草稿空间的作用。)

2. CSS 规范的分类

所有 CSS 模块(包括稳定和进行中的模块)及其状态的列表可在 CSS 当前工作页面 查阅。

2.1. 层叠样式表(CSS)— 官方定义

本概要文件仅包含我们认为稳定拥有足够实现经验、确保其稳定性的规范。

注: 本概要文件并非 CSS 桌面浏览器概要文件:收录标准仅基于特性稳定性,不考虑预期用途或 Web 浏览器采用率。该概要文件定义了最完整形式的 CSS。

截至 2024 年,层叠样式表(CSS)由以下规范定义:

CSS Level 2,最新修订版(含勘误)[CSS2]
该文档定义了 CSS 的核心,其中部分内容已被后续规范覆盖。我们特别推荐阅读第二章,该章节介绍了 CSS 的一些基本概念及其设计原则。
CSS 语法 Level 3 [CSS-SYNTAX-3]
替换了 CSS2§4.1、CSS2§4.2、CSS2§4.4 和 CSS2§G,重新定义了 CSS 的解析方式。
CSS 样式属性 [CSS-STYLE-ATTR]
定义了如何在标记属性中嵌入 CSS 声明。
媒体查询 Level 3 [CSS3-MEDIAQUERIES]
替换了 CSS2§7.3,并扩展了媒体专用样式的语法。
CSS 条件规则 Level 3 [CSS-CONDITIONAL-3]
扩展并取代了 CSS2§7.2,更新了 @media 规则的定义以允许嵌套,并引入 @supports 规则用于特性支持查询。
选择器 Level 3 [SELECTORS-3]
替换了 CSS2§5 与 CSS2§6.4.3,定义了更丰富的选择器类型。
CSS 命名空间 [CSS3-NAMESPACE]
引入 @namespace 规则以支持命名空间前缀选择器。
CSS 层叠与继承 Level 4 [CSS-CASCADE-4]
扩展并取代了 CSS2§1.4.3 和 CSS2§6,以及 [CSS-CASCADE-3]。描述了如何整理样式规则并为所有元素的全部属性赋值。通过层叠与继承机制,所有属性值会在所有元素间传播。
CSS 值与单位 Level 3 [CSS-VALUES-3]
扩展并取代了 CSS2§1.4.2.1、CSS2§4.3、CSS2§A.2.1–3,定义了 CSS 属性定义语法并扩展了单位集合。
CSS 层叠变量模块 Level 1 [CSS-VARIABLES-1]
引入层叠变量作为所有 CSS 属性接受的新原始值类型,并定义了自定义属性以便定义这些变量。
CSS 盒模型 Level 3 [CSS-BOX-3]
替换了 CSS2§8.1、§8.2、§8.3(不包括 §8.3.1)和 §8.4。
CSS 颜色 Level 4 [CSS-COLOR-4]
扩展并取代了 CSS2§4.3.6、CSS2§14.1 和 CSS2§18.2,同时扩展并取代 [CSS-COLOR-3],引入了超越 sRGB 的扩展色彩空间、扩展色值以及 CSS 对象模型的颜色扩展。同时定义了 opacity 属性。
CSS 背景与边框 Level 3 [CSS-BACKGROUNDS-3]
扩展并取代了 CSS2§8.5 和 CSS2§14.2,提供了更多控制背景和边框的功能,包括多层背景图像、图片边框和投影。
CSS 图像 Level 3 [CSS-IMAGES-3]
重新定义并纳入外部二维图像值类型,引入原生二维渐变,并为替换元素的大小与渲染提供了更多控制。
CSS 字体 Level 3 [CSS-FONTS-3]
扩展并取代 CSS2§15,提供了更多对字体选择和特性选择的控制权。
CSS 书写模式 Level 3 [CSS-WRITING-MODES-3]
定义了 CSS 对各种国际书写模式的支持,如从左到右(如拉丁或印度文字)、从右到左(如希伯来或阿拉伯文)、双向混合(如拉丁与阿拉伯文混排)及竖排(如亚洲文字)。替换并扩展了 CSS2§8.6 与 §9.10。
CSS 多栏布局 Level 1 [CSS-MULTICOL-1]
为 CSS 布局引入了多栏流。
CSS 弹性盒模块 Level 1 [CSS-FLEXBOX-1]
引入了 CSS 的灵活线性布局模型。
CSS 基本用户界面模块 Level 3 [CSS-UI-3]
扩展并取代了 CSS2§18.1 和 CSS2§18.4,定义了 cursoroutline 及多项增强用户界面的新特性。
CSS 包含性模块 Level 1 [CSS-CONTAIN-1]
引入了 contain 属性,用于强制元素子树的独立 CSS 处理,从而在合理使用时使用户代理能够进行大规模优化。
CSS 变换 Level 1 [CSS-TRANSFORMS-1]
为 CSS 引入了基于坐标的图形变换。
CSS 合成与混合 Level 1 [COMPOSITING]
定义了叠加内容的合成与混合,并引入了用于控制其模式的相关特性。
CSS 缓动函数 Level 1 [CSS-EASING-1]
描述了作者如何定义变换以控制某个值变化的速率。应用于动画时,这些变换可用于产生模拟物理现象的动画(如动量),或使动画以离散步进方式运动,产生类机器人效果。
CSS 计数器样式 Level 3 [CSS-COUNTER-STYLES-3]
引入了 @counter-style 规则,允许作者为 CSS 列表标记和生成内容计数器定义自定义计数器样式[CSS-LISTS-3]。同时预定义了一套常用计数器样式,包括 CSS2 和 CSS2.1 中存在的那些。

注: 虽然我们不预期这些快照所含规范会有重大变化,但收录并不代表它们被冻结。工作组将持续修正这些规范中发现的问题。实现者应关注 www-style 和/或 CSS 工作组博客,以获取相关变更、修正或说明。

2.2. 可靠的候选推荐标准

以下规范被认为处于可靠状态,即实现与规范基本稳定,但因一些小问题或需补充实现报告,尚未达到推荐标准(REC)级别。

媒体查询 Level 4 [MEDIAQUERIES-4]
扩展并取代 [CSS3-MEDIAQUERIES],扩展了语法,弃用大多数媒体类型,并引入了新的媒体特性。
CSS 滚动吸附模块 Level 1 [CSS-SCROLL-SNAP-1]
提供用于控制滚动与滑动行为(“吸附位置”)的特性。
CSS 滚动条样式模块 Level 1 [CSS-SCROLLBARS-1]
定义了影响滚动条视觉样式的属性,新增了颜色与宽度控制。
CSS 网格布局模块 Level 1 [CSS-GRID-1]
引入了二维网格布局系统,优化于用户界面设计。网格容器的子元素可被定位于预定义的灵活或固定大小的布局网格任意槽位中。
CSS 网格布局模块 Level 2 [CSS-GRID-2]
扩展并取代 [CSS-GRID-1],引入了“子网格”以便在共享网格框架中管理嵌套标记。

2.3. 较为稳定但实现经验有限的模块

以下模块已完成设计,且相当稳定,但尚未经过大量测试与实现经验。我们希望在未来的CSS 官方定义快照中纳入这些模块。

媒体查询 Level 4 [MEDIAQUERIES-4]
扩展并取代 [CSS3-MEDIAQUERIES],扩展语法、弃用大多数媒体类型、引入新媒体特性。
CSS 显示模块 Level 3 [CSS-DISPLAY-3]
替换了 CSS2§9.1.2、§9.2.1(不含 §9.2.1.1)、§9.2.2(不含 §9.2.2.1)、§9.2.3 和 §9.2.4(并为替代 §9.7 奠定基础),定义了如何从文档元素树生成 CSS 格式化盒树,并定义了控制此行为的 display 属性。
CSS 书写模式 Level 4 [CSS-WRITING-MODES-4]
扩展并取代 [CSS-WRITING-MODES-3],为竖排等书写方式提供更多选项。
CSS 分页模块 Level 3 [CSS-BREAK-3]
描述了将流分割为页面、列或区域的分页模型,并定义了相关控制属性。扩展并取代了 CSS2§13.3。
CSS 盒对齐模块 Level 3 [CSS-ALIGN-3]
引入了用于在多种 CSS 盒布局模型(块布局、表格布局、弹性布局和网格布局)中控制盒子对齐的属性。
CSS 形状模块 Level 1 [CSS-SHAPES-1]
扩展了浮动(CSS2§9.5),实现了非矩形环绕形状。
CSS 文本模块 Level 3 [CSS-TEXT-3]
扩展并取代了 CSS2§16(不含 §16.3),定义了文本处理属性及其处理模型。涵盖断行、对齐、空白处理和文本变换等。
CSS 文本装饰模块 Level 3 [CSS-TEXT-DECOR-3]
扩展并取代了 CSS2§16.3,提供了更多文本装饰线控制,并新增了文本强调标记和阴影的能力。
CSS 遮罩模块 Level 1 [CSS-MASKING-1]
替换了 CSS2§11.1.2,并引入了更强大的内容裁剪与遮罩手段。
CSS 滚动吸附模块 Level 1 [CSS-SCROLL-SNAP-1]
提供用于控制滚动与滑动行为(“吸附位置”)的特性。
CSS 语音模块 Level 1 [CSS-SPEECH-1]
替换了 CSS2§A,彻底改写了(非规范性)语音渲染章节。
CSS 视图过渡模块 Level 1 [CSS-VIEW-TRANSITIONS-1]
定义了视图过渡 API 及相关属性与伪元素,使开发者能够创建表现文档状态变化的动画视觉过渡效果。

2.4. 互操作性较弱的模块

尽管以下模块已广泛部署并具有较弱的互操作性,但其细节尚未完全敲定或规范性不足,需要进一步测试和修复。我们希望未来能将它们纳入CSS 官方定义快照。

CSS 过渡 Level 1 [CSS-TRANSITIONS-1]CSS 动画 Level 1 [CSS-ANIMATIONS-1]
引入了随时间变化 CSS 属性计算值的机制。
CSS Will Change Level 1 [CSS-WILL-CHANGE-1]
引入了性能提示属性 will-change
滤镜效果模块 Level 1 [FILTER-EFFECTS-1]
引入了滤镜效果,用于在元素渲染到文档前进行处理。
CSS 字体加载模块 Level 3 [CSS-FONT-LOADING-3]
引入了动态加载字体资源的事件与接口。
CSS 盒尺寸 Level 3 [CSS-SIZING-3]
覆盖并扩展了 CSS§10,增加了尺寸属性的可选值、引入更精确的尺寸术语,并详细定义了 CSS2 中仅模糊描述的各种自动尺寸概念。
CSS 变换 Level 2 [CSS-TRANSFORMS-2]
基于 [CSS-TRANSFORMS-1],增加了三维变换的新函数与属性,以及简易变换的便捷函数。
CSS 列表与计数器模块 Level 3 [CSS-LISTS-3]
包含与列表计数器相关的 CSS 特性:样式化、定位与数值操作。
CSS 逻辑属性与值 Level 1 [CSS-LOGICAL-1]
引入逻辑属性与值,使作者可通过逻辑方向与尺寸映射控制布局,而不依赖物理方向。同时为 [CSS2] 中定义的特性增加逻辑属性与值。这些属性是对应物理属性的书写模式相关等价物。
CSS 定位布局模块 Level 3 [CSS-POSITION-3]
定义了 CSS 的基于坐标的定位与偏移方案,包括相对定位粘性定位绝对定位固定定位
Resize Observer [RESIZE-OBSERVER-1]
本规范描述了用于观察元素主盒尺寸变化的 API。
Web 动画 [WEB-ANIMATIONS-1]
定义用于同步与定时网页表现变化的模型。同时定义了用于与该模型交互的 API。
CSS 字体模块 Level 4 [CSS-FONTS-4]
扩展并取代 CSS Fonts 3,提供对字体选择和特性选择的更多控制,包括对 OpenType 变体的支持。
CSS 颜色调整模块 Level 1 [CSS-COLOR-ADJUST-1]
本模块引入了用户代理自动颜色调整的模型和控制,以适应用户偏好与设备输出优化。
CSS 条件规则模块 Level 4 [CSS-CONDITIONAL-4]
扩展 CSS 条件规则 3,允许检测受支持选择器。
CSS 层叠与继承 Level 5 [CSS-CASCADE-5]
扩展 CSS 层叠 4,引入了层叠图层(cascade layers)。
运动路径模块 Level 1 [MOTION-1]
本模块允许作者为任意图形对象指定路径并沿该路径进行定位与动画。
CSS 滚动锚定模块 Level 1 [CSS-SCROLL-ANCHORING-1]
本模块旨在通过将滚动容器的滚动位置锁定到特定锚点元素,以最小化内容的跳动。
CSS 对象模型(CSSOM) [CSSOM-1]
本模块定义了用于解析、序列化和操作 CSS、媒体查询和选择器的 API。
CSS 颜色模块 Level 5 [CSS-COLOR-5]
扩展 CSS 颜色 4,新增色彩空间与色彩修改函数。
选择器 Level 4 [SELECTORS-4]
基于选择器 Level 3,新增伪类、伪元素和组合符,增强了基于更复杂条件与状态选择元素的能力。

2.5. CSS 等级

层叠样式表(CSS)没有传统意义上的版本;相反,它有等级(levels)。每一级 CSS 都建立在前一等级的基础之上,完善定义并添加新特性。每个更高等级的特性集合是任何较低等级的超集,而更高等级允许的某一特性的行为是较低等级允许行为的子集。因此,符合更高等级 CSS 的用户代理也符合所有较低等级。

CSS Level 1
CSS 工作组认为CSS1 规范 已过时。CSS Level 1 被定义为 CSS1 规范中定义的所有特性(属性、值、at 规则等),但使用CSS2.1 规范中的语法和定义。CSS Style Attributes 定义了其在元素专有样式属性中的包含方式。
CSS Level 2
尽管CSS2 规范在技术上是 W3C 推荐标准,但其成为推荐阶段时,W3C 还未定义候选推荐阶段(CR)。随着实现经验和进一步评审的发展,CSS2 规范中暴露出许多问题,因此,CSS 工作组选择定义 CSS Level 2 修订版 1(CSS2.1),而不是扩展日益庞大的勘误列表。如果两个规范有冲突,以 CSS2.1 为准。

一旦 CSS2.1 成为候选推荐标准——实际上虽然并非正式,却与 CSS2 达到同等稳定性——就废除了 CSS2 推荐标准。CSS2 中被 CSS2.1 移除的特性应视为处于候选推荐阶段,但请注意,这些特性中有许多已被或将被纳入 CSS Level 3 工作草案,一旦相关规范进入 CR 阶段,将废除 CSS2 中的定义。

CSS2.1 规范定义了CSS Level 2,而CSS Style Attributes 规范定义了其在元素专有样式属性中的包含方式。

CSS Level 3
CSS Level 3 以模块为单位在 CSS Level 2 基础上扩展,核心采用 CSS2.1 规范。每个模块都增加功能和/或替换 CSS2.1 规范的部分内容。CSS 工作组的目标是新的 CSS 模块不会与 CSS2.1 规范冲突:只会添加功能和完善定义。每当一个模块完成时,就会被加入到由 CSS2.1 加先前已完成模块组成的体系中。

从这个等级开始,各模块独立分级:例如,选择器 Level 4 可能会在 CSS Line Module Level 3 之前完成。没有CSS Level 2 对应的模块从 Level 1 开始;更新CSS Level 2 特性的模块从 Level 3 开始。

CSS Level 4 及以后
没有 CSS Level 4。各独立模块可以达到 Level 4 或更高,但 CSS 这门语言本身不再有等级。(“CSS Level 3”这个术语仅用于区分前面的整体版本。)

2.6. CSS 配置文件

并非所有实现都能实现 CSS 所定义的所有功能。

过去,工作组曾发布过少数配置文件(Profile),旨在定义各类用户代理预期支持的 CSS 最小子集。

该工作已停止,因为工作组认为其效果和实用性有限,此前定义的配置文件现已无人维护。

注: CSS 的部分实现,即使该子集是官方配置文件,也必须遵循部分实现的前向兼容解析规则。

3. 负责任地实现 CSS 的要求

以下各节定义了负责任实现 CSS、以促进当下和未来互操作性的若干一致性要求。

3.1. 部分实现

为了让作者能够利用前向兼容解析规则设置回退值,CSS 渲染器必须将所有在自身没有可用支持级别的 at 规则、属性、属性值、关键字及其他语法结构视为无效 (并按需忽略。 尤其是,用户代理不得在单个多值属性声明中有选择性地忽略不支持的属性值而保留支持的值:如果有任意值被视为无效(所有不支持的值都必须如此),CSS 要求整个声明被忽略。

3.2. 不稳定和专有特性的实现

为了避免与未来稳定的 CSS 特性冲突,CSSWG 建议对 CSS 的不稳定特性和专有扩展的实现采用如下最佳实践:

3.2.1. 实验与不稳定特性

对 W3C 规范中描述但尚未实现互操作性的不稳定特性的实现,不应面向大众广泛发布;但可以在受控环境下以有限、实验性方式发布。

为什么? 我们希望允许作者和实现者对特性进行试验和反馈,但要防止作者在生产网站上依赖这些特性,从而因内容依赖而意外“锁定”某些语法或行为,而这些可能会在后续发生变更。
例如, UA 可以通过 beta 或其他测试阶段构建、隐藏配置开关、仅针对特定测试合作伙伴启用的开关,或其他限制依赖使用的方式,发布不稳定特性以供试验。

CSS 特性被视为不稳定,直到其规范在 W3C 流程中达到候选推荐(CR)阶段。特殊情况下,CSSWG 可通过正式记录的决议,将部分 CR 之前的特性纳入可安全大规模发布的范畴。参见§ 4 可发布的 pre-CR 例外

注:厂商应明确咨询工作组,而不应自行判断此事,因为尚未达 CR 的规范如果长时间未变更,通常更可能是过时而非稳定。

3.2.2. 专有与非标准化特性

为避免与未来 CSS 特性冲突,CSS2.1 规范为专有和实验性扩展预留了前缀语法 [CSS2]。如果某 CSS 特性专为单一厂商的用户代理在封闭环境中使用,则该特性被定义为专有扩展。UA 只应通过厂商前缀语法支持此类专有扩展,且不应在开放(多 UA)环境如万维网上公开这些特性。

为什么? 要求加前缀可以让定制特性在封闭环境中发布而不会与标准 CSS 的未来新增冲突。对开放系统的限制则是防止无意间让公共 CSS 环境依赖未标准化的专有扩展
例如, Firefox 的 XUL UI、Apple 的 iTunes UI、Microsoft 的 UWP 应用都使用了其各自 UA 所实现的 CSS 扩展。只要这些 UA 不允许 Web 内容访问这些特性,就不会导致内容依赖其专有扩展

即使某特性最终计划用于 Web,只要尚未标准化,仍不应向 Web 公开。

3.2.3. 市场压力与事实标准

如果某特性不稳定(即规范尚未稳定),但:

实现方可在正式发布版本中无前缀发布该特性。粗略互操作性通过主观判断确定:即便有差异,但实现足够相似,可适用于实际网站相当数量的用例。

注意:仍需与 CSSWG 协商以保证厂商间协调,并由各厂商的 CSS 专家进行一致性审查。还要注意,粗略互操作性通常意味着在边界(甚至非边界)场景下仍存在痛苦的互操作性缺失,尤其是因为细节尚未通过标准审查流程敲定。

为什么? 如果某特性足够流行,三家及以上浏览器在标准化完成前已实现,本条款允许缓解“抢先发布”压力。如果特性已“流入野外”并被网站依赖,假装其仍是“实验性”毫无意义。允许其他厂商无前缀发布,承认该特性已成事实标准,并鼓励作者编写跨平台代码。
3.2.3.1. 不稳定特性的厂商前缀

当在正式发布中向 Web 公开此类标准轨道不稳定特性时,实现应同时支持厂商前缀和无前缀语法。 一旦该特性稳定,且实现已达互操作标准,应移除对厂商前缀语法的支持。

为什么? 这样做便于作者使用无前缀语法面向所有实现,但如有必要,也可通过前缀语法针对特定实现绕过兼容性问题,直到标准/修正流程解决差异。

没有仅支持前缀语法的阶段,大大降低了仅用前缀写样式表的风险。这样一来,一旦特性稳定,UA 厂商可放心移除前缀语法,减少破坏现有内容的风险。也减少了部分厂商偶尔被迫支持他厂前缀的情况,因为内容依赖了该语法。

任何向作者推广不稳定特性的人,都应以标准的无前缀语法进行文档说明,避免鼓励在除兼容性绕过外的任何场景使用厂商前缀语法。

3.2.3.2. 保持 CSS 的开放性

为保持 CSS 作为一项技术的开放性,厂商应确保其他实现者可以自由实现它们所发布的特性。为此,厂商应提供规范编辑和测试资源,协助此类特性的标准化完善,并避免如平台依赖、许可限制等阻碍竞争对手支持该特性的障碍。

3.3. CR 级特性的实现

一旦规范进入候选推荐(CR)阶段,实施方应对任何能按规范正确实现的 CR 级特性发布无前缀实现,并避免暴露该特性的前缀变体。

为确保和维护 CSS 在不同实现间的互操作性,CSS 工作组要求非实验性 CSS 渲染器在发布任何 CSS 特性无前缀实现前,向 W3C 提交实现报告(如有必要,还需提交用于该实现报告的测试用例)。提交给 W3C 的测试用例将由 CSS 工作组进行审查和修正。

关于提交测试用例和实现报告的更多信息,可在 CSS 工作组网站 https://www.w3.org/Style/CSS/Test/ 查阅。如有问题,可邮件咨询 public-css-testsuite@w3.org

4. 允许发布的 pre-CR 例外

以下特性已被 CSS 工作组明确主动批准,可在规范达到候选推荐(CR)之前广泛发布。参见§ 3.2.1 实验与不稳定特性

以下特性已被 CSS 工作组明确追溯批准,可在规范达到候选推荐(CR)之前广泛发布:

5. 索引

以下各节为非规范性内容。

5.1. 术语索引

5.2. 选择器索引

5.3. At 规则索引

5.4. 属性索引

5.5. 值索引

6. 致谢

特别感谢 Florian Rivoal 为 § 3.2.1 实验和不稳定特性建议创建了初始草案。

一致性

文档约定

符合性要求通过描述性断言和RFC 2119术语的组合来表达。关键字“MUST”(必须)、“MUST NOT”(不得)、“REQUIRED”(必需)、“SHALL”(应)、“SHALL NOT”(不应)、“SHOULD”(建议)、“SHOULD NOT”(不建议)、“RECOMMENDED”(推荐)、“MAY”(可以)和“OPTIONAL”(可选)在本文件的规范部分中应按照RFC 2119的描述进行解释。然而,为了提高可读性,这些词在本规范中不会全部以大写字母形式出现。

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

本规范中的示例以“例如”开头或通过使用class="example"进行区分,如下所示:

这是一个信息性示例。

信息性注释以“注释”开头,并使用class="note"进行区分,如下所示:

注释,这是一个信息性注释。

建议部分是规范性部分,样式设计为引起特别注意,并通过<strong class="advisement">与其他规范性文本区分开来,如下所示:用户代理(UAs)必须提供一个可访问的替代方案。

一致性类别

本规范的符合性定义为三个类别:

样式表
一个CSS样式表
渲染器
一个用户代理(UA),负责解释样式表的语义并渲染使用这些样式表的文档。
创作工具
一个用户代理(UA),负责编写样式表。

样式表符合本规范的要求,如果它的所有使用本模块定义的语法的声明都符合通用CSS语法以及本模块定义的每个功能的个别语法。

渲染器符合本规范的要求,如果它除了按照相关规范解释样式表外,还支持本规范定义的所有功能,能够正确解析它们并相应地渲染文档。然而,由于设备限制导致用户代理无法正确渲染文档并不构成违反规范。(例如,用户代理不需要在单色显示器上渲染颜色。)

创作工具符合本规范的要求,如果它编写的样式表在语法上符合通用CSS语法以及本模块定义的每个功能的个别语法,并满足本模块中描述的样式表的所有其他符合性要求。

部分实现

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

不稳定和专有特性实现

为了避免与未来稳定的CSS特性发生冲突,CSS工作组(CSSWG)建议遵循最佳实践来实现不稳定特性和CSS的专有扩展

非实验性实现

一旦规范进入候选推荐阶段(CR),就可以进行非实验性实现。实施者应发布符合规范正确实现的CR级特性的无前缀实现。

为了在不同实现之间建立并保持CSS的互操作性,CSS工作组要求非实验性CSS渲染器在发布任何CSS特性的无前缀实现之前,向W3C提交实现报告(如果需要,还应提交实现报告使用的测试用例)。提交给W3C的测试用例需经过CSS工作组的审查和修正。

有关提交测试用例和实现报告的更多信息,请访问CSS工作组的网站:https://www.w3.org/Style/CSS/Test/。如有疑问,请发送邮件至public-css-testsuite@w3.org

参考文献

规范性引用

[COMPOSITING]
Chris Harrelson. 合成与混合第1级(Compositing and Blending Level 1). 2024年3月21日. CRD. URL: https://www.w3.org/TR/compositing-1/
[CSS-BACKGROUNDS-3]
Elika Etemad; Brad Kemper. CSS背景和边界模块第3级(CSS Backgrounds and Borders Module Level 3). 2024年3月11日. CRD. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-BOX-3]
Elika Etemad. CSS盒模型模块第3级(CSS Box Model Module Level 3). 2024年4月11日. REC. URL: https://www.w3.org/TR/css-box-3/
[CSS-CASCADE-4]
Elika Etemad; Tab Atkins Jr.. CSS级联与继承第4级(CSS Cascading and Inheritance Level 4). 2022年1月13日. CR. URL: https://www.w3.org/TR/css-cascade-4/
[CSS-COLOR-4]
Chris Lilley; Tab Atkins Jr.; Lea Verou. CSS颜色模块第4级(CSS Color Module Level 4). 2024年2月13日. CRD. URL: https://www.w3.org/TR/css-color-4/
[CSS-COLOR-5]
Chris Lilley; 等人. CSS颜色模块第5级(CSS Color Module Level 5). 2024年2月29日. WD. URL: https://www.w3.org/TR/css-color-5/
[CSS-CONDITIONAL-3]
Chris Lilley; David Baron; Elika Etemad. CSS条件规则模块第3级(CSS Conditional Rules Module Level 3). 2024年8月15日. CRD. URL: https://www.w3.org/TR/css-conditional-3/
[CSS-CONTAIN-1]
Tab Atkins Jr.; Florian Rivoal. CSS包含模块第1级(CSS Containment Module Level 1). 2024年6月25日. REC. URL: https://www.w3.org/TR/css-contain-1/
[CSS-CONTAIN-2]
Tab Atkins Jr.; Florian Rivoal; Vladimir Levin. CSS包含模块第2级(CSS Containment Module Level 2). 2022年9月17日. WD. URL: https://www.w3.org/TR/css-contain-2/
[CSS-COUNTER-STYLES-3]
Tab Atkins Jr.. CSS计数器样式第3级(CSS Counter Styles Level 3). 2021年7月27日. CR. URL: https://www.w3.org/TR/css-counter-styles-3/
[CSS-DISPLAY-3]
Elika Etemad; Tab Atkins Jr.. CSS显示模块第3级(CSS Display Module Level 3). 2023年3月30日. CR. URL: https://www.w3.org/TR/css-display-3/
[CSS-EASING-1]
Brian Birtles; Dean Jackson; Matt Rakow. CSS缓动函数第1级(CSS Easing Functions Level 1). 2023年2月13日. CRD. URL: https://www.w3.org/TR/css-easing-1/
[CSS-FLEXBOX-1]
Tab Atkins Jr.; 等人. CSS弹性盒布局模块第1级(CSS Flexible Box Layout Module Level 1). 2018年11月19日. CR. URL: https://www.w3.org/TR/css-flexbox-1/
[CSS-FONTS-3]
John Daggett; Myles Maxfield; Chris Lilley. CSS字体模块第3级(CSS Fonts Module Level 3). 2018年9月20日. REC. URL: https://www.w3.org/TR/css-fonts-3/
[CSS-FONTS-4]
Chris Lilley. CSS字体模块第4级(CSS Fonts Module Level 4). 2024年2月1日. WD. URL: https://www.w3.org/TR/css-fonts-4/
[CSS-IMAGES-3]
Tab Atkins Jr.; Elika Etemad; Lea Verou. CSS图像模块第3级(CSS Images Module Level 3). 2023年12月18日. CRD. URL: https://www.w3.org/TR/css-images-3/
[CSS-IMAGES-4]
Tab Atkins Jr.; Elika Etemad; Lea Verou. CSS图像模块第4级(CSS Images Module Level 4). 2023年2月17日. WD. URL: https://www.w3.org/TR/css-images-4/
[CSS-MULTICOL-1]
Florian Rivoal; Rachel Andrew. CSS多列布局模块第1级(CSS Multi-column Layout Module Level 1). 2024年5月16日. CR. URL: https://www.w3.org/TR/css-multicol-1/
[CSS-POSITION-3]
Elika Etemad; Tab Atkins Jr.. CSS定位布局模块第3级(CSS Positioned Layout Module Level 3). 2024年8月10日. WD. URL: https://www.w3.org/TR/css-position-3/
[CSS-SIZING-3]
Tab Atkins Jr.; Elika Etemad. CSS盒尺寸模块第3级(CSS Box Sizing Module Level 3). 2021年12月17日. WD. URL: https://www.w3.org/TR/css-sizing-3/
[CSS-SIZING-4]
Tab Atkins Jr.; Elika Etemad; Jen Simmons. CSS盒尺寸模块第4级(CSS Box Sizing Module Level 4). 2021年5月20日. WD. URL: https://www.w3.org/TR/css-sizing-4/
[CSS-STYLE-ATTR]
Tantek Çelik; Elika Etemad. CSS样式属性(CSS Style Attributes). 2013年11月7日. REC. URL: https://www.w3.org/TR/css-style-attr/
[CSS-SYNTAX-3]
Tab Atkins Jr.; Simon Sapin. CSS语法模块第3级(CSS Syntax Module Level 3). 2021年12月24日. CRD. URL: https://www.w3.org/TR/css-syntax-3/
[CSS-TEXT-4]
Elika Etemad; 等人. CSS文本模块第4级(CSS Text Module Level 4). 2024年5月29日. WD. URL: https://www.w3.org/TR/css-text-4/
[CSS-TRANSFORMS-1]
Simon Fraser; 等人. CSS变换模块第1级(CSS Transforms Module Level 1). 2019年2月14日. CR. URL: https://www.w3.org/TR/css-transforms-1/
[CSS-TRANSFORMS-2]
Tab Atkins Jr.; 等人. CSS变换模块第2级(CSS Transforms Module Level 2). 2021年11月9日. WD. URL: https://www.w3.org/TR/css-transforms-2/
[CSS-UI-3]
Tantek Çelik; Florian Rivoal. CSS基础用户界面模块第3级(CSS Basic User Interface Module Level 3). 2018年6月21日. REC. URL: https://www.w3.org/TR/css-ui-3/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS值与单位模块第3级(CSS Values and Units Module Level 3). 2024年3月22日. CRD. URL: https://www.w3.org/TR/css-values-3/
[CSS-VARIABLES-1]
Tab Atkins Jr.. CSS自定义属性模块第1级(CSS Custom Properties for Cascading Variables Module Level 1). 2022年6月16日. CR. URL: https://www.w3.org/TR/css-variables-1/
[CSS-WILL-CHANGE-1]
Tab Atkins Jr.. CSS意图变更模块第1级(CSS Will Change Module Level 1). 2022年5月5日. CRD. URL: https://www.w3.org/TR/css-will-change-1/
[CSS-WRITING-MODES-3]
Elika Etemad; Koji Ishii. CSS书写模式第3级(CSS Writing Modes Level 3). 2019年12月10日. REC. URL: https://www.w3.org/TR/css-writing-modes-3/
[CSS2]
Bert Bos; 等人. 层叠样式表第2级修订版1(CSS Level 2 Revision 1)规范. 2011年6月7日. REC. URL: https://www.w3.org/TR/CSS21/
[CSS3-MEDIAQUERIES]
Florian Rivoal. 媒体查询第3级(Media Queries Level 3). 2024年5月21日. REC. URL: https://www.w3.org/TR/mediaqueries-3/
[CSS3-NAMESPACE]
Elika Etemad. CSS命名空间模块第3级(CSS Namespaces Module Level 3). 2014年3月20日. REC. URL: https://www.w3.org/TR/css-namespaces-3/
[RFC2119]
S. Bradner. RFC中使用的关键字以指示需求级别. 1997年3月. 最佳当前实践. URL: https://datatracker.ietf.org/doc/html/rfc2119
[SELECTORS-3]
Tantek Çelik; 等人. 选择器第3级(Selectors Level 3). 2018年11月6日. REC. URL: https://www.w3.org/TR/selectors-3/
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. 选择器第4级(Selectors Level 4). 2022年11月11日. WD. URL: https://www.w3.org/TR/selectors-4/

参考性引用

[CSS-ALIGN-3]
Elika Etemad; Tab Atkins Jr.. CSS盒对齐模块第3级(CSS Box Alignment Module Level 3). 2023年2月17日. WD. URL: https://www.w3.org/TR/css-align-3/
[CSS-ANIMATIONS-1]
David Baron; 等人. CSS动画第1级(CSS Animations Level 1). 2023年3月2日. WD. URL: https://www.w3.org/TR/css-animations-1/
[CSS-BREAK-3]
Rossen Atanassov; Elika Etemad. CSS片段化模块第3级(CSS Fragmentation Module Level 3). 2018年12月4日. CR. URL: https://www.w3.org/TR/css-break-3/
[CSS-CASCADE-3]
Elika Etemad; Tab Atkins Jr.. CSS级联与继承第3级(CSS Cascading and Inheritance Level 3). 2021年2月11日. REC. URL: https://www.w3.org/TR/css-cascade-3/
[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS级联与继承第5级(CSS Cascading and Inheritance Level 5). 2022年1月13日. CR. URL: https://www.w3.org/TR/css-cascade-5/
[CSS-COLOR-3]
Tantek Çelik; Chris Lilley; David Baron. CSS颜色模块第3级(CSS Color Module Level 3). 2022年1月18日. REC. URL: https://www.w3.org/TR/css-color-3/
[CSS-COLOR-ADJUST-1]
Elika Etemad; 等人. CSS颜色调整模块第1级(CSS Color Adjustment Module Level 1). 2022年6月14日. CRD. URL: https://www.w3.org/TR/css-color-adjust-1/
[CSS-CONDITIONAL-4]
David Baron; Elika Etemad; Chris Lilley. CSS条件规则模块第4级(CSS Conditional Rules Module Level 4). 2022年2月17日. CR. URL: https://www.w3.org/TR/css-conditional-4/
[CSS-FONT-LOADING-3]
Tab Atkins Jr.. CSS字体加载模块第3级(CSS Font Loading Module Level 3). 2023年4月6日. WD. URL: https://www.w3.org/TR/css-font-loading-3/
[CSS-GRID-1]
Tab Atkins Jr.; 等人. CSS网格布局模块第1级(CSS Grid Layout Module Level 1). 2020年12月18日. CRD. URL: https://www.w3.org/TR/css-grid-1/
[CSS-GRID-2]
Tab Atkins Jr.; Elika Etemad; Rossen Atanassov. CSS网格布局模块第2级(CSS Grid Layout Module Level 2). 2020年12月18日. CRD. URL: https://www.w3.org/TR/css-grid-2/
[CSS-LISTS-3]
Elika Etemad; Tab Atkins Jr.. CSS列表和计数器模块第3级(CSS Lists and Counters Module Level 3). 2020年11月17日. WD. URL: https://www.w3.org/TR/css-lists-3/
[CSS-LOGICAL-1]
Rossen Atanassov; Elika Etemad. CSS逻辑属性和值第1级(CSS Logical Properties and Values Level 1). 2018年8月27日. WD. URL: https://www.w3.org/TR/css-logical-1/
[CSS-MASKING-1]
Dirk Schulze; Brian Birtles; Tab Atkins Jr.. CSS遮罩模块第1级(CSS Masking Module Level 1). 2021年8月5日. CRD. URL: https://www.w3.org/TR/css-masking-1/
[CSS-SCROLL-ANCHORING-1]
Tab Atkins Jr.. CSS滚动锚定模块第1级(CSS Scroll Anchoring Module Level 1). 2020年11月11日. WD. URL: https://www.w3.org/TR/css-scroll-anchoring-1/
[CSS-SCROLL-SNAP-1]
Matt Rakow; 等人. CSS滚动捕捉模块第1级(CSS Scroll Snap Module Level 1). 2021年3月11日. CR. URL: https://www.w3.org/TR/css-scroll-snap-1/
[CSS-SCROLLBARS-1]
Tantek Çelik; Rossen Atanassov; Florian Rivoal. CSS滚动条样式模块第1级(CSS Scrollbars Styling Module Level 1). 2021年12月9日. CR. URL: https://www.w3.org/TR/css-scrollbars-1/
[CSS-SHAPES-1]
Rossen Atanassov; Alan Stearns. CSS形状模块第1级(CSS Shapes Module Level 1). 2022年11月15日. CRD. URL: https://www.w3.org/TR/css-shapes-1/
[CSS-SPEECH-1]
Léonie Watson; Elika Etemad. CSS语音模块第1级(CSS Speech Module Level 1). 2023年2月14日. CRD. URL: https://www.w3.org/TR/css-speech-1/
[CSS-TEXT-3]
Elika Etemad; Koji Ishii; Florian Rivoal. CSS文本模块第3级(CSS Text Module Level 3). 2024年9月30日. CRD. URL: https://www.w3.org/TR/css-text-3/
[CSS-TEXT-DECOR-3]
Elika Etemad; Koji Ishii. CSS文本装饰模块第3级(CSS Text Decoration Module Level 3). 2022年5月5日. CRD. URL: https://www.w3.org/TR/css-text-decor-3/
[CSS-TRANSITIONS-1]
David Baron; 等人. CSS过渡(CSS Transitions). 2018年10月11日. WD. URL: https://www.w3.org/TR/css-transitions-1/
[CSS-VIEW-TRANSITIONS-1]
Tab Atkins Jr.; Jake Archibald; Khushal Sagar. CSS视图过渡模块第1级(CSS View Transitions Module Level 1). 2024年3月28日. CRD. URL: https://www.w3.org/TR/css-view-transitions-1/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS书写模式第4级(CSS Writing Modes Level 4). 2019年7月30日. CR. URL: https://www.w3.org/TR/css-writing-modes-4/
[CSSOM-1]
Daniel Glazman; Emilio Cobos Álvarez. CSS对象模型(CSS Object Model,CSSOM). 2021年8月26日. WD. URL: https://www.w3.org/TR/cssom-1/
[FILTER-EFFECTS-1]
Dirk Schulze; Dean Jackson. 滤镜效果模块第1级(Filter Effects Module Level 1). 2018年12月18日. WD. URL: https://www.w3.org/TR/filter-effects-1/
[MEDIAQUERIES-4]
Florian Rivoal; Tab Atkins Jr.. 媒体查询第4级(Media Queries Level 4). 2021年12月25日. CRD. URL: https://www.w3.org/TR/mediaqueries-4/
[MOTION-1]
Tab Atkins Jr.; Dirk Schulze; Jihye Hong. 运动路径模块第1级(Motion Path Module Level 1). 2024年11月5日. WD. URL: https://www.w3.org/TR/motion-1/
[RESIZE-OBSERVER-1]
Aleks Totic; Greg Whitworth. 调整观察器(Resize Observer). 2020年2月11日. FPWD. URL: https://www.w3.org/TR/resize-observer-1/
[WEB-ANIMATIONS-1]
Brian Birtles; 等人. Web动画(Web Animations). 2023年6月5日. WD. URL: https://www.w3.org/TR/web-animations-1/