文档状态
1. 简介
第3级中的功能仍然在[css-conditional-3]中定义,尚未复制到本规范。
本级为@supports规则增加了扩展,允许检测对选择器的支持情况。
本级规范扩展了<supports-feature>语法如下:
<supports-feature> = <supports-selector-fn> | <supports-decl>
<supports-selector-fn> = selector( <complex-selector> )
- <supports-selector-fn>
-
如果UA支持该函数参数给定的选择器,则结果为true。
测试
本例用于测试
column
连接符(||)
是否在选择器中被支持,
若支持则用其为表格中的特定单元格设置样式。
@supports selector(col || td) {
col.selected || td {
background: tan;
}
}
在条件分组规则中使用的任何命名空间前缀都必须已声明,
否则为无效配置[css-conditional-3]。
这同样适用于 selector 函数中的命名空间前缀。
测试
本例尝试检测带有
CSS限定名的属性选择器是否被支持,
但由于命名空间前缀未声明,属于无效情况。
@supports selector(a[xlink|href]) {
// do something, but fail
}
本例检测带有
CSS限定名的属性选择器是否被支持。
@namespace x url(http://www.w3.org/1999/xlink);
@supports selector(a[x|href]) {
// do something
}
2.1. 支持定义的扩展
当CSS处理器递归地接受该选择器的所有部分(而不是认为其任何语法未知或无效),
且该选择器不包含未知的 -webkit- 伪元素时,
则被认为支持CSS选择器。
注意:某些函数型选择器采用宽容解析,即使某些参数未知或无效,选择器本身不会被判为无效。
这些情况依然被视为不支持。
安全性注意事项
尚未发现针对本文档的安全性问题。
隐私注意事项
selector()函数可能会暴露关于用户软件的信息,
例如其版本及是否启用或禁用某些非默认功能。
这些信息也可以通过其他API获得,
不过本规范中的相关功能是网页上暴露这些信息的途径之一。
这些信息还可用于提升用户指纹识别的准确率。
致谢
编辑者感谢上一版本模块的所有贡献者。
变更
- 明确指出选择器中未知或无效部分虽然不会使选择器整体无效,但依然导致该选择器被视为不支持。
自第3级以来的新增内容
文档约定
一致性要求通过描述性断言和 RFC 2119 术语组合表达。规范性部分中的关键词 “MUST”(必须)、“MUST NOT”(禁止)、“REQUIRED”(必需)、“SHALL”(应当)、“SHALL
NOT”(不得)、“SHOULD”(建议)、“SHOULD NOT”(不建议)、“RECOMMENDED”(推荐)、“MAY”(可以)、“OPTIONAL”(可选)应按 RFC 2119 的说明进行解释。
但为了可读性,本规范未将这些词全部大写。
除明确标记为非规范性章节、示例和注释外,本规范的所有内容均为规范性内容。[RFC2119]
规范中的示例会以“例如”引入,或通过 class="example"
与规范性文本区分,如下所示:
说明性注释以“注意”开头,并用 class="note"
与规范性文本区分,如下所示:
注意,这是一个说明性注释。
建议性内容为规范性章节,并采用特殊样式突出显示,与其他规范性文本区分,形式如下:UA 必须提供无障碍替代方案。
测试
与本规范内容相关的测试可在类似于此的“测试”区块中记录。
这些区块均为非规范性内容。
本规范的一致性定义了三种一致性类别:
- 样式表
- CSS 样式表。
- 渲染器
- 解释样式表语义并渲染使用它们的文档的UA。
- 创作工具
- 用于编写样式表的UA。
如果样式表中所有使用本模块定义语法的声明都符合通用 CSS 语法和本模块各特性的语法,则该样式表符合本规范。
渲染器符合本规范,需在按相关规范解释样式表的基础上,正确解析并渲染本规范定义的所有特性。但 UA 因设备限制无法正确渲染文档,并不视为不符合规范。(例如,UA 不要求在单色显示器上渲染颜色。)
创作工具符合本规范,需编写语法正确且符合本模块各特性语法的样式表,并满足本模块所述的所有其他样式表一致性要求。
部分实现
为便于作者利用兼容性解析规则指定回退值,CSS 渲染器必须将所有不支持的 at-rule、属性、属性值、关键字和其他语法结构视为无效(并按要求忽略)。特别地,用户代理不得在一个多值属性声明中选择性地忽略不支持的值而保留支持的值:如有任何值被认为无效(所有不支持的值都必须如此),则整个声明必须被
CSS 忽略。
为避免与未来稳定的 CSS 特性冲突,CSSWG 推荐遵循最佳实践来实现不稳定特性及专有扩展。
非实验性实现
当规范进入候选推荐阶段后,便可实现非实验性实现,且实现者应发布不带前缀的、可证明按规范正确实现的任何 CR 级特性。
为建立并保持 CSS 在各实现间的互操作性,CSS 工作组要求非实验性 CSS 渲染器在发布不带前缀的 CSS 特性实现前,向 W3C 提交实现报告(如有必要,还需提交用于该报告的测试用例)。提交给 W3C 的测试用例将由
CSS 工作组审核和修正。
提交测试用例和实现报告的更多信息可在 CSS 工作组网站 https://www.w3.org/Style/CSS/Test/
获取。
问题可通过public-css-testsuite@w3.org 邮件列表咨询。
CR 退出标准
本规范要晋升为建议推荐,需每项特性至少有两个独立且可互操作的实现。每项特性可由不同产品实现,无需所有特性由同一产品实现。对此标准,定义如下术语:
- 独立
- 每个实现必须由不同的团队开发,不得共享、重用或派生自其他合格实现的代码。与本规范实现无关的代码可不受此限制。
- 可互操作
- 通过官方 CSS 测试套件的相关测试,或(若实现不是 Web 浏览器)通过等效测试。若使用此类 UA 声称互操作性,则需为每个相关测试创建等效测试,且需有一个或多个其他 UA
能以相同方式通过这些测试,且等效测试需公开以便同行评审。
- 实现
-
指如下用户代理:
- 实现了本规范。
- 向公众开放。可为正式产品或其他公开版本(如测试版、预览版或“nightly build”)。非正式产品需至少实现相关特性一个月,以验证稳定性。
- 不是实验性实现(即非专为通过测试套件而设计、未来不打算正常使用的版本)。
规范将至少保持候选推荐状态六个月。
索引
本规范定义的术语
引用定义的术语
参考文献
规范性参考
- [CSS-CONDITIONAL-3]
- Chris Lilley; David Baron; Elika Etemad. CSS
Conditional Rules Module Level 3. 2024年8月15日. CRD. URL: https://www.w3.org/TR/css-conditional-3/
- [CSS-VALUES-4]
- Tab Atkins Jr.; Elika Etemad. CSS Values and Units
Module Level 4. 2024年3月12日. WD. URL: https://www.w3.org/TR/css-values-4/
- [RFC2119]
- S. Bradner. Key words for use in RFCs to
Indicate Requirement Levels. 1997年3月. 最佳当前实践. URL: https://datatracker.ietf.org/doc/html/rfc2119
- [SELECTORS-4]
- Elika Etemad; Tab Atkins Jr.. Selectors Level
4. 2022年11月11日. WD. URL: https://www.w3.org/TR/selectors-4/
- [CSS-NAMESPACES-3]
- Elika Etemad. CSS Namespaces Module Level
3. 2014年3月20日. REC. URL: https://www.w3.org/TR/css-namespaces-3/
问题索引