本文档的状态
目录
1 介绍
2 @supports 规则的扩展
2.1
对支持定义的扩展
安全考虑
隐私考虑
致谢
变更
自
2020年3月3日首次公开工作草案 以来的变更
自第3级以来的新增内容
一致性
文档约定
一致性类别
部分实现
不稳定和专有功能的实现
非实验性实现
CR退出标准
索引
本规范定义的术语
通过引用定义的术语
参考文献
规范性参考文献
说明性参考文献
问题索引
1. 介绍
第三级中的特性仍定义在[css-conditional-3] 中,尚未复制到此处。
本级别对@supports 规则进行了扩展,以允许测试支持的选择器。
本级别的规范扩展了<supports-feature> 语法,具体如下:
<supports-feature> = <supports-selector-fn> | <supports-decl>
<supports-selector-fn> = selector( <complex-selector> )
<supports-selector-fn>
如果用户代理 支持提供给函数的选择器 ,则结果为 true。
测试
这个例子测试了
列组合器 (||)
是否在选择器中受支持,如果支持,就使用它来样式化表中的特定单元格。
@supports selector ( col || td) {
col.selected || td {
background : tan;
}
}
在 条件分组规则 中使用的任何命名空间前缀都必须已经声明,否则它们是无效的[css-conditional-3] 。这包括选择器函数中的命名空间前缀。
测试
这个例子尝试检查带有
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 处理器支持 CSS 选择器 。
安全考虑
本文件未提出任何安全问题。
隐私考虑
selector() 函数可能会提供有关用户软件的信息,例如其版本以及是否运行具有启用或禁用某些功能的非默认设置。
此信息也可以通过其他 API 确定。然而,本规范中的功能是这些信息在 Web 上公开的方式之一。
此信息也可以聚合用于提高用户指纹识别 的准确性。
致谢
编辑们要感谢本模块上一版本 的所有贡献者。
变更
自第3级以来的新增内容
文档约定
一致性要求通过描述性声明和 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" >
,例如:用户代理必须(MUST)提供一个可访问的替代方案。
测试
与本规范内容相关的测试可能会在像这样的“测试”块中进行记录。任何这样的块都是非规范性的。
本规范的一致性定义了三个一致性类别:
样式表
CSS 样式表 。
渲染器
用户代理(UA) ,解释样式表的语义并渲染使用它们的文档。
编写工具
用户代理(UA) ,编写样式表。
如果样式表中使用了本模块中定义的语法的所有语句都是有效的,根据通用 CSS 语法和本模块中定义的每个功能的单独语法,则该样式表符合本规范。
如果渲染器除了按照适当的规范解释样式表外,还能通过正确解析支持本规范中定义的所有功能并相应地渲染文档,则该渲染器符合本规范。然而,由于设备的限制而导致用户代理无法正确渲染文档,并不使其不符合规范。(例如,用户代理不要求在单色显示器上呈现颜色。)
如果编写工具编写的样式表在语法上是根据通用 CSS 语法和本模块中定义的每个功能的单独语法正确的,并且符合本模块中描述的样式表的所有其他一致性要求,则该编写工具符合本规范。
部分实现
为了让作者能够利用向前兼容的解析规则来分配后备值,CSS 渲染器必须 将所有不具备可用支持级别的 at 规则、属性、属性值、关键字和其他语法结构视为无效(并适当忽略 )。特别是,用户代理不得 选择性地忽略不支持的组件值并在单个多值属性声明中保留支持的值:如果任何值被认为是无效的(如同不支持的值必须是的那样),CSS
要求整个声明被忽略。
为了避免与未来的稳定 CSS 功能发生冲突,CSS 工作组建议遵循最佳实践 来实现不稳定的 功能和专有扩展 。
非实验性实现
一旦规范达到候选推荐(CR)阶段,就可以进行非实验性实现,且实现者应发布不加前缀的实现版本,对于任何符合 CR 级别且能够证明正确实现的功能。
为了建立和保持 CSS 在实现之间的互操作性,CSS 工作组要求非实验性 CSS 渲染器在发布不加前缀的 CSS 功能实现之前向 W3C 提交实现报告(如有必要,还需提交实现报告所用的测试用例)。提交给 W3C 的测试用例须由
CSS 工作组进行审查和修正。
有关提交测试用例和实现报告的更多信息,请参见 CSS 工作组网站上的https://www.w3.org/Style/CSS/Test/ 。如有疑问,请联系public-css-testsuite@w3.org 邮件列表。
CR 退出标准
为了将本规范推进到提议推荐(PR),每个功能必须至少有两个独立且互操作的实现。每个功能可以由不同的产品实现,不要求所有功能都由同一产品实现。为满足此标准,我们定义以下术语:
独立
每个实现必须由不同的开发方开发,且不能共享、重用或派生于另一符合条件的实现所使用的代码。对本规范的实现没有影响的代码部分不在此要求范围之内。
互操作
通过官方 CSS 测试套件中的相应测试用例,或如果实现不是 Web
浏览器,则通过等效测试。如果使用这样的用户代理(UA)来声明互操作性,则每个相关的测试套件应有一个等效的测试被创建。此外,如果使用这样的用户代理(UA)来声明互操作性,则必须有一个或多个其他的用户代理也能通过这些等效测试,目的是证明互操作性。这些等效测试必须公开以供同行审查。
实现
用户代理,需符合以下条件:
实现规范。
对公众可用。该实现可以是正式发布的产品或其他公开可用的版本(例如,测试版本、预览版或“每夜构建版”)。非正式发布的产品版本必须在至少一个月内实现该功能以证明其稳定性。
不是实验性(例如,专门为了通过测试套件而设计的版本且不是为了正常使用的)。
规范将在候选推荐阶段保留至少六个月。
索引
本规范定义的术语
通过引用定义的术语
参考文献
规范性参考文献
[CSS-CONDITIONAL-3]
David Baron; Elika Etemad; Chris Lilley. CSS
条件规则模块第 3 级 . 2022 年 1 月 13 日. CR. URL: https://www.w3.org/TR/css-conditional-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS 值与单位模块第 4
级 . 2021 年 12 月 16 日. WD. URL: https://www.w3.org/TR/css-values-4/
[RFC2119]
S. Bradner. 在 RFC 中用于表示要求级别的关键词 .
1997 年 3 月. 最佳当前实践. URL: https://datatracker.ietf.org/doc/html/rfc2119
[SCROLL-ANIMATIONS]
滚动链接动画 . cg-draft. URL: https://wicg.github.io/scroll-animations/
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. 选择器第 4 级 . 2018 年
11 月 21 日. WD. URL: https://www.w3.org/TR/selectors-4/
[CSS-NAMESPACES-3]
Elika Etemad. CSS 命名空间模块第 3 级 . 2014 年 3 月
20 日. REC. URL: https://www.w3.org/TR/css-namespaces-3/
问题索引