CSS颜色调整模块第1级

W3C候选推荐草案,

有关此文档的更多详细信息
此版本:
https://www.w3.org/TR/2025/CRD-css-color-adjust-1-20250812/
最新发布版本:
https://www.w3.org/TR/css-color-adjust-1/
编辑草案:
https://drafts.csswg.org/css-color-adjust-1/
以前的版本:
历史:
https://www.w3.org/standards/history/css-color-adjust-1/
实施报告:
https://wpt.fyi/results/css/css-color-adjust?label=experimental&label=master&aligned
反馈:
CSSWG问题库
规范内联
编辑:
Elika J. Etemad / fantasai (Apple)
(Microsoft)
(Google)
Tab Atkins Jr. (Google)
为此规范提出编辑建议:
GitHub 编辑器
测试套件:
https://wpt.fyi/results/css/css-color-adjust/

摘要

本模块引入了一个模型以及对用户代理自动颜色调整的控制,以处理用户偏好,例如“深色模式”、对比度调整或特定的颜色方案。

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

本文档的状态

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

本文档由 CSS 工作组 作为候选推荐草案使用推荐轨道发布。 作为候选推荐草案发布并不意味着 W3C 及其成员的认可。 候选推荐草案 集成了工作组拟在后续候选推荐快照中包含的前一版候选推荐的更改。

这是一个草案文档, 随时可能被更新、替换或废弃。 将本文档引用为非进展中的工作是不合适的。

请通过在 GitHub 中提交问题(首选)提供反馈, 在标题中包含规范代码“css-color-adjust”,例如: “[css-color-adjust] …评论摘要…”。 所有问题和评论都会被存档。 或者,可以将反馈发送至(存档)公共邮件列表www-style@w3.org

本文档受 2023年11月03日 W3C 过程文档 管辖。

本文档由遵循W3C 专利政策的团体制作。 W3C 维护了与工作组交付物相关的任何专利披露的公开列表; 该页面还包含披露专利的说明。 如果某人知道某项专利,并认为其中包含必要性主张, 必须按照W3C 专利政策第6节披露该信息。

1. 介绍

本规范引入了三个与控制用户代理如何/何时自动调整颜色相关的新功能:

结合prefers-color-schemeprefers-contrastforced-colors媒体查询[MEDIAQUERIES-5], 该模块允许在作者和用户之间进行颜色方案协商。

1.1. 值的定义

本规范遵循CSS属性定义惯例,来源于[CSS2],以及值定义语法,来源于[CSS-VALUES-3]。 本规范未定义的值类型定义在CSS值与单位[CSS-VALUES-3]中。 与其他CSS模块结合可能扩展这些值类型的定义。

除了定义中列出的特定属性值外, 本规范定义的所有属性 还接受CSS-wide关键字作为其属性值。 为了可读性,它们未被显式重复。

2. 首选颜色方案

操作系统和用户代理通常允许用户 为用户界面元素选择其首选颜色方案。 此颜色方案 通常反映在用户代理的导航界面渲染中, 以及页面内的界面元素中, 如表单控件和滚动条。

UA还可以允许用户表示对 他们查看的页面颜色方案的偏好, 请求作者根据这些颜色偏好调整页面。 (不需要表达这种偏好; 用户可以对操作系统界面颜色有偏好, 但不希望将其强加于页面。)

最常见的颜色方案 偏好是:

浅色深色颜色方案并不代表确切的调色板 (如黑白), 而是一系列可能的调色板。 要保证特定颜色,作者必须自己指定这些颜色。 另外需要注意, 因此, 将默认或<system-color>颜色与作者指定的颜色搭配 无法保证任何特定的对比度级别; 可能需要同时设置前景色和背景色, 以确保可读性[WCAG21]

为了让页面能够适应用户的首选颜色方案, 用户代理将匹配prefers-color-scheme媒体查询 到用户的首选颜色方案[MEDIAQUERIES-5] 与此相辅相成,本文档定义的color-scheme属性 让作者能够为UA提供的UI和页面中的颜色指明合适的颜色方案

用户代理可能支持额外的颜色方案, 然而CSS不支持额外颜色方案的协商: 用户代理应追求这些方案的标准化, 以便prefers-color-schemecolor-scheme可以反映这些额外的值。

2.1. 选择首选颜色方案:color-scheme属性

名称: color-scheme
值: normal | [ light | dark | <custom-ident> ]+ && only?
初始值: normal
适用于: 所有元素和文本
是否继承:
百分比: 不适用
计算值: 关键字normal,或指定颜色方案关键字的有序列表
规范顺序: 按语法
动画类型: 离散
测试

虽然prefers-color-scheme媒体特性 允许作者根据用户的首选颜色方案调整页面颜色, 但页面的许多部分并不在作者的控制范围内 (例如表单控件、滚动条等)。 color-scheme属性允许一个元素指明 它设计用于渲染的颜色方案。 这些值与用户的偏好进行协商, 产生一个使用的颜色方案, 它会影响诸如 表单控件和滚动条的默认颜色。 (参见§ 2.2 使用的颜色方案的影响。)

注意:由于许多页面是在颜色方案支持存在之前编写的, 用户代理无法自动调整其控制的元素中使用的颜色, 因为这可能导致与周围页面的颜色对比无法读取。

宿主语言可以定义页面支持的颜色方案, 即默认支持该页面上所有元素的颜色方案列表。

注意:[HTML]定义了一个color-scheme meta 标签,可以用来设置页面支持的颜色方案

值定义如下:

normal

表示该元素支持页面支持的颜色方案, 如果设置了;否则表示它根本不支持任何颜色方案

light

表示该元素支持浅色方案

dark

表示该元素支持深色方案

only

禁止用户代理为该元素覆盖颜色方案

<custom-ident>

<custom-ident>值没有意义, 它们仅存在于未来兼容性, 以便未来添加的颜色方案不会使旧版用户代理中的color-scheme声明无效。 用户代理不得将任何<custom-ident>值解释为有意义; 任何额外的可识别颜色方案 必须明确添加到该属性的语法中。

注意:为了避免混淆, 作者教程和参考资料 应省略<custom-ident>

normallightdarkonly关键字 在该属性中不是有效的<custom-ident>

注意:浅色深色颜色方案并不是特定的调色板。 例如, 一个强烈的黑色-白色方案和一个棕褐色背景的深褐色方案 都可以被视为浅色方案。 要确保特定的前景色或背景色, 需要明确指定它们。

确定元素的使用颜色方案
  1. 如果用户的首选颜色方案, 根据prefers-color-scheme媒体特性指示, 存在于列出的颜色方案中, 且被用户代理支持, 则这是元素的使用颜色方案

  2. 否则, 如果用户已表明对其选定的颜色方案的覆盖偏好, 且only关键字未出现在元素的color-scheme中, 用户代理必须使用用户的首选颜色方案覆盖颜色方案。 参见§ 2.3 覆盖颜色方案

  3. 否则, 如果用户代理支持至少一个列出的颜色方案使用颜色方案是 列表中第一个支持的颜色方案

  4. 否则, 使用颜色方案为浏览器默认值。 (与normal相同。)

注意:用户代理不要求支持任何特定的颜色方案, 因此仅使用单个关键字, 例如color-scheme: dark, 来指示所需的颜色方案仍然不能保证对元素的渲染产生任何效果。

一个通过 prefers-color-scheme媒体特性 根据用户对明亮或黑暗显示的偏好来改变所用颜色的页面, 可以通过一个简单的全局声明 轻松使浏览器控制的UI (滚动条、输入框等)匹配:
:root {
  color-scheme: light dark;
}

如果页面仅限于使用<system-color>, 上述color-scheme声明 将支持用户的首选颜色方案, 即使在作者无需使用@media的情况下。

如果页面不能合理地容纳所有颜色方案, 例如出于品牌或戏剧性原因,color-scheme仍然可以指示 页面可以支持的颜色方案, 导致UI匹配。

如果页面的颜色方案主要是明亮的, 以下将明确指示:

:root {
  color-scheme: light;
}

而如果页面主要是黑暗的, 明确指示这一点也会使页面看起来更加一致:

:root {
  color-scheme: dark;
}

然而,当然更好的是支持这两种颜色方案。

页面可能通常能够处理多种颜色方案, 但仍然存在需要以特定颜色方案渲染的子部分。

例如, 样式指南可能会给出多个使用明亮或黑暗颜色的UI示例, 专门展示明亮或黑暗主题。 这可以表示为:

:root {
  color-scheme: light dark;
}

.light-theme-example {
  color-scheme: light;
}

.dark-theme-example {
  color-scheme: dark;
}

仅根植于.light-theme-example.dark-theme-example的子部分将被明确选择进入lightdark主题; 页面其余部分将尊重用户的偏好。

注意:重复关键字,例如color-scheme: light light, 是有效的但不会产生超出关键字首次出现所提供效果的额外影响。

2.2. 已用颜色方案的影响

对于所有元素, 用户代理必须将以下内容与已用颜色方案匹配:

在根元素上, 已用颜色方案 还必须影响 画布 和视口滚动条的表面颜色。

为了保持预期的颜色对比, 在通常通过透明画布(例如通过HTML iframe 元素提供的文档嵌入)呈现的嵌入文档的情况下, 如果该元素的已用颜色方案 与嵌入文档根元素的已用颜色方案不匹配, 则UA必须使用一个不透明的画布,该画布使用与嵌入文档的 已用颜色方案相适应的Canvas颜色, 而不是透明画布。 此规则不适用于通过用于图形的元素嵌入的文档 (例如 img 元素嵌入一个SVG文档)。

注意:除了上述的小范围调整外, 用户代理通常不会进一步调整页面 以匹配用户的首选颜色方案, 因为无意间破坏页面的可能性太高。 然而,当用户需要特定的颜色选择时 (例如出于无障碍原因), 可能会应用更具侵入性的更改; 参见§ 3 强制调色板

2.3. 覆盖颜色方案

如果用户表明对特定颜色方案有覆盖偏好, 并且作者未通过使用only关键字禁止此操作, 用户代理可以覆盖颜色方案, 强制已用颜色方案为用户的 首选颜色方案。 如果该元素不支持该颜色方案, 用户代理还必须自动调整其他颜色以适应所选的颜色方案, 例如通过反转其亮度, 同时保持页面可读性所需的颜色对比。 在这种情况下,UA还可以在替换元素、背景图像和其他外部资源中自动调整颜色。

注意:此类自动调整的具体细节由UA定义, 并且可能因UA而异。 但并非旨在将所有颜色强制为固定的调色板, 如强制颜色模式那样, 仅是将页面上的所有颜色 强制为符合深色浅色颜色方案。

例如,UA可能有一个“暗室”模式, 该模式强制所有页面使用深色颜色方案。

对于已支持深色颜色方案的页面, 并通过color-scheme属性 或 color-scheme meta 名称指明了这一点, 除了报告dark值 给prefers-color-scheme媒体查询, 并选择一个深色已用颜色方案, 此外没有其他影响。

但对于未明确支持深色颜色方案的页面, 并且未通过指定color-scheme: only light 明确禁止此自动调整的页面, 此模式将触发页面颜色的自动调整, 以强制页面符合所需的深色颜色方案。

3. 强制调色板

强制颜色模式是一种无障碍功能, 旨在通过颜色对比提高文本的可读性。 视力有限的用户 通常在前景色和背景色之间 存在特定类型的对比时, 会感到阅读内容更加舒适。

操作系统可以提供内置的颜色主题, 例如Windows的高对比度黑底白字 和高对比度白底黑字主题。 用户还可以自定义自己的主题, 例如提供低对比度或色调对比。

强制颜色模式下, 用户代理在页面上强制实施用户首选的调色板, 覆盖作者为特定属性选择的颜色, 参见§ 3.1 强制颜色模式影响的属性。 它还可以在文本下方强制添加“底板” (类似于在::selection伪元素上绘制背景的方式), 以确保足够的对比度以提高可读性。

为了使页面适应强制颜色模式, 用户代理将匹配forced-colors媒体查询, 并且必须通过CSS系统颜色 提供所需的调色板 (参见[CSS-COLOR-4])。 此外, 如果UA根据Lab亮度确定, Canvas颜色 明显是深色(L < 33%)或浅色(L > 67%), 则它必须匹配 prefers-color-scheme媒体查询的适当值, 并表达对应的用户首选 color-scheme。 这将允许支持浅色/深色颜色方案的页面 自动调整以更接近匹配 强制颜色方案。 上述深色与浅色阈值之间的行为 由UA定义, 并可能导致假设用户的首选颜色方案为 lightdark

如果获取模拟的强制颜色主题数据不是 "none", 用户代理应绕过上述操作系统颜色主题, 而是表现为用户已启用 强制颜色模式, 并使用为 模拟的强制颜色主题数据 的结果值定义的 强制颜色模式模拟调色板

3.1. 强制颜色模式影响的属性

强制颜色模式处于激活状态,且元素上的forced-color-adjust属性为auto(见下文), 元素上所有属性的<color>组件将被强制调整为用户首选的颜色调色板。

具体而言,强制颜色模式适用于以下颜色属性及其速记形式。 这是一份当前存在的颜色属性列表,但随着时间推移可能会添加更多属性,因此可能并不详尽:

对于属性的每个<color>组件, 如果其计算值是除系统颜色以外的颜色, 其使用值将被强制为以下的系统颜色

另外:

UA可以进一步调整这些强制颜色模式的启发式规则 以提供更好的用户体验。

作者仍然可以在强制颜色模式下使用color-mix()等功能。 在这种情况下,计算值将按正常方式运行, 但使用值将被覆盖为合适的系统颜色
.example {
  color: color-mix(in srgb, CanvasText, Canvas);
}

对于color,其计算值将是CanvasTextCanvas系统颜色的50-50混合。 该值将继承给后代并通过如computedStyleMap() 等API观察。

对于color,其使用值将是UA选择的系统颜色,例如CanvasText

3.2. 退出强制颜色调色板:forced-color-adjust 属性

名称: forced-color-adjust
值: auto | none | preserve-parent-color
初始值: auto
适用于: 所有元素和文本
是否继承:
百分比: 不适用
计算值: 与指定值一致
规范顺序: 根据语法
动画类型: 不可动画

forced-color-adjust 属性 允许作者将特定元素 从强制颜色模式中排除, 使 CSS 完全控制颜色。 值的含义如下:

auto

强制颜色模式下, 元素的颜色会由 UA 自动调整。

none

强制颜色模式下, 元素的颜色不会由 UA 自动调整。

作者仅在自己调整颜色以支持用户的颜色和对比度需求, 并需要更改 UA 的默认调整以为这些元素提供更适合的用户体验时,才应使用此值。

preserve-parent-color

强制颜色模式中, 如果color 属性从其父元素继承 (即没有级联值级联值currentColorinherit, 或其他从父元素继承的关键字), 则其计算值为其父元素使用color值的颜色。

在其他方面,其行为与none 相同。

注意: 此值仅用于从嵌入的 SVG 元素中获得合理的行为, 这些元素期望接收外部文档的文本颜色 (并与强制颜色模式的调整保持一致), 同时默认情况下使 SVG 保持其确切颜色, 因为强制颜色模式通常无法有效应用于插图。

为了不破坏 SVG 内容, UA 预计会在其 UA 样式表中添加以下规则:

@namespace "http://www.w3.org/2000/svg";
svg|svg { forced-color-adjust: preserve-parent-color; }
svg|foreignObject { forced-color-adjust: auto; }

UA 必须将设置在根元素上的 forced-color-adjust 值 传播到文档视口 (例如它能影响画布背景)。 请注意,forced-color-adjust不会 从 HTML 的 body 传播。

测试

4. 基于性能的颜色调整

在大多数显示器上, 作者选择的颜色对设备性能没有显著影响; 显示白色背景或黑色背景的文档几乎同样容易。

然而,一些设备由于限制和其他特性使得这一假设不成立。 例如, 打印机通常在白纸上打印; 因此白色背景的文档无需耗费墨水来绘制背景, 而黑色背景的文档则需要耗费大量墨水填充背景颜色。 这通常效果较差, 有时还会对纸张产生不良的物理影响, 更不用说额外墨水消耗所导致的大幅增加的打印成本。 即使是较小的差异, 例如将文本颜色设置为黑色与深灰色, 在打印时也可能有很大的不同, 因为这会从使用单一黑色墨水切换为使用青色、洋红色和黄色墨水的混合, 从而增加墨水使用量并降低分辨率。

因此,在某些情况下,用户代理会根据特定情境调整作者指定的样式, 使其更适合输出设备, 并满足他们认为用户可能偏好的设置。 然而,在某些情况下,文档可能以重要且深思熟虑的方式使用颜色, 用户会欣赏这种设计, 因此文档希望有某种方式提示用户代理尊重页面的颜色选择。 本节定义了用于控制这些自动调整的属性。

名称: print-color-adjust
值: economy | exact
初始值: economy
适用于: 所有元素
是否继承:
百分比: 不适用
计算值: 指定的关键字
规范顺序: 根据语法
动画类型: 离散
测试

print-color-adjust 属性为用户代理提供了一个提示, 说明在打印机或类似设备上可能代价高昂或通常不明智的颜色和样式选择(例如在深色背景上使用浅色文本)应如何处理。 如果用户代理允许用户控制文档显示的这一方面, 则用户偏好必须比由print-color-adjust提供的提示更优先。

economy
用户代理应根据输出设备的需要和审慎性对页面样式进行调整。

例如,如果文档正在打印, 用户代理可能会忽略任何背景 并调整文本颜色使其足够暗, 以最小化墨水使用。

exact
该值表示页面在指定的元素上使用颜色和样式的方式是重要且有意义的, 不应被调整或更改,除非用户请求。

例如, 一个提供打印指引的地图网站 可能会在指引步骤中交替使用白色和浅灰色背景的“斑马条纹”样式。 丢失这些斑马条纹并使用纯白背景 会使指引在分心的驾驶情况下快速阅读变得更加困难。

用户代理必须将根元素上设置的print-color-adjust值 传播到文档视口 (例如它能影响画布背景)。 请注意,print-color-adjust不会 从 HTML 的 body 传播。

4.2. color-adjust 简写

名称: color-adjust
值: <'print-color-adjust'>
初始值: 参见个别属性
适用于: 参见个别属性
是否继承: 参见个别属性
百分比: 参见个别属性
计算值: 参见个别属性
动画类型: 参见个别属性
规范顺序: 根据语法

color-adjust 简写允许作者 在一个声明中设置所有基于性能的颜色调整属性。 (目前,只有一个这样的属性——print-color-adjust—— 但未来可能会添加更多。)

color-adjust 简写目前已 弃用。 作者应使用更具体的print-color-adjust 属性, 以避免在目标上下文之外意外重置基于性能的颜色调整。

测试

5. 仿真

为了用户代理自动化和应用测试的目的,本文档定义了以下仿真。

5.1. 仿真强制颜色模式

每个顶级遍历对象都有一个关联的仿真强制颜色主题数据,它是表示ForcedColorsModeAutomationTheme的数据, 初始值为"none"。

enum ForcedColorsModeAutomationTheme {
  "none",
  "light",
  "dark"
};

设置仿真强制颜色主题数据,给定可导航对象navigable和一个emulatedThemeData:

  1. 断言emulatedThemeDataForcedColorsModeAutomationTheme

  2. traversablenavigable顶级遍历对象

  3. 如果traversable不为null:

    1. traversable的关联仿真强制颜色主题数据设置为 emulatedThemeData

    2. UA必须将此视为需要重新计算样式的更改。

获取仿真强制颜色主题数据,给定ForcedColorsModeAutomationTheme theme:

  1. navigabletheme相关全局对象关联文档节点可导航对象

  2. 如果navigable为null,则返回null。

  3. traversablenavigable顶级遍历对象

  4. 如果traversable为null,则返回null。

  5. 返回traversable的关联仿真强制颜色主题数据

5.2. 强制颜色模式调色板

为了用户代理自动化和应用测试的目的,本文档 定义了以下强制颜色模式仿真调色板
系统颜色映射 "light"
<system-color> 关键字
AccentColor #FFFFFF
AccentColorText #000000
ActiveText #00009F
ButtonBorder #000000
ButtonFace #FFFFFF
ButtonText #000000
Canvas #FFFFFF
CanvasText #000000
Field #FFFFFF
FieldText #000000
GrayText #600000
Highlight #37006E
HighlightText #FFFFFF
LinkText #00009F
Mark N/A - 此系统颜色关键字不应调整。
MarkText N/A - 此系统颜色关键字不应调整。
SelectedItem #37006E
SelectedItemText #FFFFFF
VisitedText #00009F
系统颜色映射 "dark"
<system-color> 关键字
AccentColor #000000
AccentColorText #FFFFFF
ActiveText #FFFF00
ButtonBorder #000000
ButtonFace #000000
ButtonText #FFFFFF
Canvas #000000
CanvasText #FFFFFF
Field #000000
FieldText #FFFFFF
GrayText #3FF23F
Highlight #1AEBFF
HighlightText #000000
LinkText #FFFF00
Mark N/A - 此系统颜色关键字不应调整。
MarkText N/A - 此系统颜色关键字不应调整。
SelectedItem #1AEBFF
SelectedItemText #000000
VisitedText #FFFF00

6. 隐私注意事项

通过颜色方案强制颜色模式应用用户颜色偏好,会通过getComputedStyle() 暴露用户的颜色偏好,从而增加指纹识别的可能性。

避免这种情况会带来一些被认为过于重要而无法忽视的不利影响。 即:

有关此主题的讨论,请参见Issue 5710

7. 安全注意事项

嵌入的文档可能通过时间攻击来判断其color-scheme是否与其嵌入的 iframe 匹配。

8. 致谢

本规范的实现 离不开Apple、Google和Microsoft 在各种颜色调整功能上的开发努力, 以及在www-style上有关打印调整的讨论。 特别是,CSS工作组想要感谢: Alison Maher, François Remy, イアンフェッティ

在此列出其他来自Microsoft / Apple / Google的贡献者。

9. 变更

2022年2月10日候选推荐快照以来的变更:

另请参见候选推荐之前的变更

一致性

文档约定

合规性要求通过描述性断言和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">与其他规范性文本区分,如下所示: 用户代理必须提供可访问的替代方案。

测试

与本规范内容相关的测试可以记录在类似这样的“测试”块中。 任何此类块均为非规范性内容。


一致性类别

对于本规范的合规性定义了三个合规性类别:

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

如果样式表中使用本模块定义的语法的所有语句均符合通用CSS语法和本模块中每个功能的单独语法,则该样式表符合本规范。

如果渲染器除了按相关规范定义解释样式表外,还通过正确解析和相应渲染文档支持本规范中定义的所有功能,则该渲染器符合本规范。然而,由于设备限制导致UA无法正确渲染文档的情况并不使UA不符合规范。(例如,UA不需要在单色显示器上渲染颜色。)

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

部分实现

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

不稳定和专有功能的实现

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

非实验性实现

一旦规范达到候选推荐阶段, 就可以进行非实验性实现,并且实现者应该 发布任何CR级功能的非前缀实现, 前提是他们可以证明这些功能已按规范正确实现。

为了建立和维护CSS在不同实现中的互操作性, CSS工作组要求非实验性CSS渲染器向W3C提交实现报告 (以及必要时用于该实现报告的测试用例), 在发布任何CSS功能的非前缀实现之前。提交给W3C的测试用例 将由CSS工作组进行审查和修正。

有关提交测试用例和实现报告的进一步信息, 可以在CSS工作组的网站上找到,网址为https://www.w3.org/Style/CSS/Test/。 有关问题应发送到public-css-testsuite@w3.org邮件列表。

CR退出标准

要将本规范推进到建议推荐阶段, 每项功能必须至少有两个独立且可互操作的实现。 每项功能可以由不同的产品集实现, 无需所有功能都由单个产品实现。根据这一标准, 我们定义以下术语:

独立
每个实现必须由 不同的方开发,并且不能共享、重用或派生自 另一个符合条件的实现所使用的代码。与本规范实现无关的代码部分 不受此要求的约束。
可互操作
通过官方CSS测试套件中的 相应测试用例,或者,如果该实现不是Web浏览器, 则通过等效测试。测试套件中的每个相关测试 如果要用此类用户代理(UA)声称互操作性, 则应创建等效测试。此外, 如果要用此类UA声称互操作性, 则必须有一个或多个其他UA也能够以相同方式通过这些 等效测试,以实现互操作性。这些等效测试 必须公开用于同行评审。
实现
一个用户代理,其:
  1. 实现了规范。
  2. 对公众可用。该实现可以是发布的产品或其他公开可用的版本 (即,Beta版本、预览版或“每夜构建版”)。 非发布产品版本必须至少实现该功能 一个月,以证明其稳定性。
  3. 不是实验性的(即,专门设计用于通过测试套件的版本, 并且不打算继续用于正常使用)。

本规范至少在候选推荐阶段保留六个月。

索引

本规范定义的术语

引用中定义的术语

参考文献

规范性引用

[CSS-BACKGROUNDS-3]
Elika Etemad; Brad Kemper. CSS 背景和边框模块 第3级. 2024年3月11日. CRD. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS 层叠和继承 第5级. 2022年1月13日. CR. URL: https://www.w3.org/TR/css-cascade-5/
[CSS-COLOR-4]
Chris Lilley; Tab Atkins Jr.; Lea Verou. CSS 颜色模块 第4级. 2025年4月24日. CRD. URL: https://www.w3.org/TR/css-color-4/
[CSS-COLOR-5]
Chris Lilley; et al. CSS 颜色模块 第5级. 2025年3月18日. WD. URL: https://www.w3.org/TR/css-color-5/
[CSS-FONTS-4]
Chris Lilley. CSS 字体模块 第4级. 2024年2月1日. WD. URL: https://www.w3.org/TR/css-fonts-4/
[CSS-PSEUDO-4]
Elika Etemad; Alan Stearns. CSS 伪元素模块 第4级. 2025年6月27日. WD. URL: https://www.w3.org/TR/css-pseudo-4/
[CSS-SCROLLBARS-1]
Tantek Çelik; Rossen Atanassov; Florian Rivoal. CSS 滚动条样式模块 第1级. 2021年12月9日. CR. URL: https://www.w3.org/TR/css-scrollbars-1/
[CSS-TEXT-DECOR-4]
Elika Etemad; Koji Ishii. CSS 文本装饰模块 第4级. 2022年5月4日. WD. URL: https://www.w3.org/TR/css-text-decor-4/
[CSS-UI-4]
Florian Rivoal. CSS 基础用户界面模块 第4级. 2021年3月16日. WD. URL: https://www.w3.org/TR/css-ui-4/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS 值和单位模块 第3级. 2024年3月22日. CRD. URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS 值和单位模块 第4级. 2024年3月12日. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS2]
Bert Bos; et al. 层叠样式表 第2级修订版 (CSS 2.1) 规范. 2011年6月7日. REC. URL: https://www.w3.org/TR/CSS2/
[CSSOM-1]
Daniel Glazman; Emilio Cobos Álvarez. CSS 对象模型 (CSSOM). 2021年8月26日. WD. URL: https://www.w3.org/TR/cssom-1/
[HTML]
Anne van Kesteren; et al. HTML 标准. 活标准. URL: https://html.spec.whatwg.org/multipage/
[MEDIAQUERIES-5]
Dean Jackson; et al. 媒体查询 第5级. 2021年12月18日. WD. URL: https://www.w3.org/TR/mediaqueries-5/
[RFC2119]
S. Bradner. RFC 中用于指示需求级别的关键词. 1997年3月. 最佳当前实践. URL: https://datatracker.ietf.org/doc/html/rfc2119

信息性引用

[CSS-CONDITIONAL-3]
Chris Lilley; David Baron; Elika Etemad. CSS 条件规则模块 第3级. 2024年8月15日. CRD. URL: https://www.w3.org/TR/css-conditional-3/
[CSS-GAPS-1]
Kevin Babbitt. CSS 间隙装饰模块 第1级. 2025年4月17日. FPWD. URL: https://www.w3.org/TR/css-gaps-1/
[CSS-TYPED-OM-1]
Tab Atkins Jr.; François Remy. CSS 类型化对象模型 第1级. 2024年3月21日. WD. URL: https://www.w3.org/TR/css-typed-om-1/
[FILL-STROKE-3]
Elika Etemad; Tab Atkins Jr.. CSS 填充和描边模块 第3级. 2017年4月13日. FPWD. URL: https://www.w3.org/TR/fill-stroke-3/
[FILTER-EFFECTS-1]
Dirk Schulze; Dean Jackson. 滤镜效果模块 第1级. 2018年12月18日. WD. URL: https://www.w3.org/TR/filter-effects-1/
[SVG2]
Amelia Bellamy-Royds; et al. 可缩放矢量图形 (SVG) 2. 2018年10月4日. CR. URL: https://www.w3.org/TR/SVG2/
[WCAG21]
Michael Cooper; et al. 网络内容无障碍指南 (WCAG) 2.1. 2025年5月6日. REC. URL: https://www.w3.org/TR/WCAG21/

属性索引

名称 初始值 适用于 是否继承 %ages 动画类型 规范顺序 计算值
color-adjust <'print-color-adjust'> 参见个别属性 参见个别属性 参见个别属性 参见个别属性 参见个别属性 根据语法 参见个别属性
color-scheme normal | [ light | dark | <custom-ident> ]+ && only? normal 所有元素和文本 不适用 离散 根据语法 关键字normal,或指定的color scheme关键字的有序列表
forced-color-adjust auto | none | preserve-parent-color auto 所有元素和文本 不适用 不可动画 根据语法 与指定值一致
print-color-adjust economy | exact economy 所有元素 不适用 离散 根据语法 指定的关键字

IDL 索引

enum ForcedColorsModeAutomationTheme {
  "none",
  "light",
  "dark"
};

问题索引

在此列出其他来自 Microsoft / Apple / Google 的贡献者。