CSS 层叠与继承第 3 级

W3C 推荐标准,

此版本
https://w3org.cn/TR/2021/REC-css-cascade-3-20210211/
最新发布版本
https://w3org.cn/TR/css-cascade-3/
编辑草案
https://drafts.csswg.org/css-cascade-3/
历史版本
https://w3org.cn/TR/2020/PR-css-cascade-3-20201222/
实现报告
https://drafts.csswg.org/css-cascade-3/implementation-report.html
测试套件
http://test.csswg.org/suites/css-cascade-3_dev/nightly-unstable/
问题追踪
CSS 工作组问题仓库
意见处理说明
编辑
Elika J. Etemad / fantasai (特邀专家)
Tab Atkins Jr. (Google)
建议编辑此规范
GitHub 编辑器

请查看 勘误表,了解自发布以来报告的任何错误或问题。


摘要

本 CSS 模块描述了如何整理样式规则并为所有元素上的所有属性赋值。通过层叠(cascading)和继承(inheritance),值可以在所有元素的所有属性上进行传播。

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

关于本文档

本节描述了本文件发布时的状态。其他文件可能会取代本文件。W3C 当前出版物列表和本技术报告的最新修订版本可在 https://w3org.cn/TR/ 的 W3C 技术报告索引中找到。

本文档由 CSS 工作组推荐标准形式发布。

W3C 推荐标准(Recommendation)是指在经过广泛的共识建立后,获得 W3C 及其成员背书的规范。W3C 建议将此规范作为 Web 标准广泛部署。

请通过在 GitHub 上提交 issue(首选)来发送反馈,并在标题中包含规范代码“[css-cascade]”,例如:“[css-cascade] …评论摘要…”。所有议题和评论均已归档。或者,也可以将反馈发送至(已归档的)公共邮件列表 www-style@w3.org

本文档受 2020年9月15日版 W3C 流程文档 约束。

本文档由在 W3C 专利政策下运作的团体编写。W3C 维护着一份与该团体交付成果相关的专利披露公开列表;该页面还包含了披露专利的指南。任何对个人认为包含必要权利要求 (Essential Claim(s)) 的专利具有实际知情权的个人,必须根据 W3C 专利政策第 6 节披露相关信息。

1. 简介

CSS 的基本设计原则之一是层叠(cascading),它允许多个样式表影响文档的呈现。当不同的声明尝试为相同的元素/属性组合设置值时,必须以某种方式解决冲突。

当没有任何声明试图为元素/属性组合设置值时,会出现相反的问题。在这种情况下,将通过继承或查看属性的初始值来确定该值。

层叠默认值过程以一组声明作为输入,并输出每个元素上每个属性的指定值

本规范描述了为文档中所有元素上的所有属性查找指定值的规则。页面上下文及其边距框中的指定值查找规则描述于 [css-page-3] 中。

1.1. 模块交互

本节是规范性的。

本模块替换并扩展了 [CSS2] 第 6 章中定义的分配属性值、层叠和继承的规则。

其他 CSS 模块可能会扩展此处定义的某些语法和功能。例如,媒体查询第 4 级规范在与本模块结合时,扩展了本规范中使用的 <media-query> 值类型的定义。

2. 导入样式表:@import 规则

@import 规则允许用户从其他样式表导入样式规则。如果 @import 规则指向有效的样式表,用户代理必须将该样式表的内容视为在 @import 规则处编写的一样,但有两个例外。

例如,来自导入样式表的样式规则中的声明与层叠的交互,就像它们被字面地写在样式表中的 @import 处一样。

任何 @import 规则都必须位于样式表中所有其他有效的 at-rule 和样式规则(忽略 @charset)之前,否则该 @import 规则无效。@import 的语法为:

@import [ <url> | <string> ] <media-query-list>? ;

其中 <url><string> 给出了要导入的样式表的 URL,而可选的 <media-query-list>导入条件)说明了它适用的条件。

如果提供了 <string>,则必须将其解释为具有相同值的 <url>

以下各行意义相同,并演示了两种 @import 语法(一种带有 url(),另一种带有裸字符串)。
@import "mystyle.css";
@import url("mystyle.css");

2.1. 条件 @import 规则

导入条件允许导入依赖于媒体类型。在没有任何导入条件的情况下,导入是无条件的。(为 <media-query-list> 指定 all 具有相同的效果。)如果导入条件不匹配,则导入样式表中的规则不适用,就像导入的样式表被包裹在具有给定媒体查询的 @media 块中一样。

以下规则说明了如何使 @import 规则依赖于媒体。
@import url("fineprint.css") print;
@import url("bluish.css") projection, tv;
@import url("narrow.css") handheld and (max-width: 400px);

因此,只要媒体查询不匹配,用户代理就可以避免获取依赖于媒体的导入。

导入条件的评估和完整语法由媒体查询规范 [MEDIAQ] 定义。

2.2. 处理样式表导入

当同一个样式表在多个地方被导入或链接到文档时,用户代理必须处理(或表现得好像处理了)每个链接,就像该链接指向一个独立的样式表一样。

注:这不对资源获取提出任何要求,仅涉及样式表如何在 CSSOM 中反映以及在本规范等规范中如何使用。假设缓存得当,UA 只获取一次样式表是完全合适的,即使它被多次链接或导入。

导入样式表的来源是导入它的样式表的来源

导入样式表的环境编码是导入它的样式表的编码。[css-syntax-3]

2.3. CSS 样式表的 Content-Type

导入样式表的处理取决于链接资源的实际类型。如果资源没有 Content-Type 元数据,或者宿主文档处于怪异模式 (quirks mode) 且与导入的样式表具有相同来源,则链接资源的类型为 text/css。否则,类型将根据其 Content-Type 元数据确定。

如果链接资源的类型为 text/css,则必须将其解释为 CSS 样式表。否则,必须将其解释为网络错误。

3. 简写属性

某些属性是简写属性,意味着它们允许作者通过单个属性指定多个属性的值。简写属性设置其所有的长写子属性,就像原地展开一样。

当简写形式中省略了值时,除非另有定义,否则每个“缺失的”子属性都会被分配其初始值

这意味着简写属性声明总是设置其所有子属性,即使是那些未明确设置的属性。使用不当可能会导致无意中重置某些子属性。使用得当的话,简写可以通过重置从其他来源无意中层叠的子属性来保证“从零开始”。

例如,编写 background: green 而不是 background-color: green 可确保背景颜色覆盖任何先前可能已将背景设置为具有 background-image 的图像的声明。

例如,CSS Level 1 的 font 属性是一个简写属性,用于同时设置 font-stylefont-variantfont-weightfont-sizeline-heightfont-family。此示例中的多个声明
h1 {
  font-weight: bold;
  font-size: 12pt;
  line-height: 14pt;
  font-family: Helvetica;
  font-variant: normal;
  font-style: normal;
}

因此可以重写为

h1 { font: bold 12pt/14pt Helvetica }

随着 CSS 中引入更多的 font 子属性,简写声明也会将它们重置为其初始值。

在某些情况下,简写可能具有不同的语法或特殊关键字,这些语法或关键字不直接对应其子属性的值。(在这种情况下,简写将明确定义其值的展开。)

在其他情况下,属性可能是简写的仅重置子属性:像其他子属性一样,当未指定时,它会被简写重置为其初始值,但简写可能不包含将其设置为其任何其他值的语法。例如,border 简写将 border-image 重置为其初始值 none,但没有将其设置为其他值的语法。[css-backgrounds-3]

如果将简写指定为 CSS 全局关键字 [css-values-3] 之一,它会将所有子属性设置为该关键字,包括任何仅重置子属性。(请注意,这些关键字不能在单个声明中与其他值组合,即使在简写中也不行。)

简写属性声明为 !important 等同于将该简写的所有子属性声明为 !important

3.1. 重置所有属性:all 属性

名称all
initial | inherit | unset
初始值 见各个属性
应用于见各个属性
可继承 见各个属性
百分比 见各个属性
计算值 见各个属性
动画类型 见各个属性
规范顺序按语法

all 属性是一个简写,用于重置所有 CSS 属性,除了 directionunicode-bidi。它仅接受 CSS 全局关键字。它不会重置自定义属性 [css-variables-1]

注:例外的 CSS 属性 directionunicode-bidi 实际上是标记级功能,不应在作者的样式表中设置。(它们仅作为 CSS 属性存在,用于样式化 UA 不支持的文档语言。)作者应改用适当的标记,例如 HTML 的 dir 属性。[css-writing-modes-3]

例如,如果作者在一个元素上指定了 all: initial,它将阻止所有继承并重置所有属性,就好像层叠的作者、用户或用户代理层级中没有出现任何规则一样。

这对于包含在页面中的“小部件”的根元素很有用,因为它不希望继承外部页面的样式。但请注意,应用于该元素的任何“默认”样式(例如,来自 UA 样式表中块级元素如 <div>display: block)也将被清除。

4. 值处理

一旦用户代理解析了文档并构建了文档树,它就必须为树中的每个元素,以及格式化结构中的每个框,为目标媒体类型适用的每个属性分配一个值。

给定元素或盒子的 CSS 属性的最终值是多步计算的结果:

  1. 首先,为每个元素上的每个属性收集应用于该元素的所有声明值。应用于该元素的声明值可能有零个或多个。
  2. 层叠产生层叠值。每个元素上的每个属性最多有一个层叠值
  3. 默认设定产生指定值。每个元素上的每个属性恰好有一个指定值
  4. 解决值依赖关系产生计算值。每个元素上的每个属性恰好有一个计算值
  5. 格式化文档产生使用值。仅当给定属性适用于该元素时,该元素才具有该属性的使用值
  6. 最后,使用值根据显示环境的约束转换为实际值。与使用值一样,元素上的给定属性可能存在也可能不存在实际值

4.1. 声明值

每个应用于元素的属性声明都会贡献一个与该元素关联的该属性的声明值。详细信息请参阅过滤声明

这些值随后由层叠处理,以选择单个“获胜值”。

4.2. 层叠值

层叠值代表层叠的结果:它是胜出层叠(在层叠输出中排名第一)的声明值。如果层叠输出是一个空列表,则没有层叠值

4.3. 指定值

指定值是样式表作者为该元素预期的给定属性的值。它是将层叠值通过默认值处理过程的结果,确保每个元素上的每个属性都有一个指定值

在许多情况下,指定值就是层叠值。但是,如果没有层叠值,则指定值会被赋予默认值CSS 全局关键字在作为属性的层叠值时会进行特殊处理,根据该关键字的要求设置指定值,请参阅§ 7.3 显式默认值

4.4. 计算值

计算值是将指定值按照属性定义表中的“计算值”行定义进行解析的结果,通常是在为继承做准备时将其绝对化。

注意:计算值是在继承期间从父级传递到子级的值。出于历史原因,它不一定是 getComputedStyle() 函数返回的值,该函数有时会返回使用值[CSSOM] 此外,计算值是一种抽象数据表示:其定义反映了数据表示,而不是数据如何序列化。例如,序列化规则通常允许省略在解析期间隐含的某些值;但这些值仍然是计算值的一部分。

指定值可以是绝对的(即不相对于其他值,如 red2mm)或相对的(即相对于其他值,如 auto, 2em)。计算相对值通常会将其绝对化

参见下表中的示例 (f)、(g) 和 (h)。

注意:通常,计算值会尽可能地解析指定值,而无需进行文档布局或执行其他昂贵或难以并行化的操作,例如解析网络请求或检索除元素及其父元素以外的值。

即使在属性不适用时,计算值也存在。但是,某些属性可能会根据该属性是否适用于该元素来改变其确定计算值的方式。

4.5. 使用值

使用值是将计算值并完成任何剩余计算,使其成为格式化文档时使用的绝对理论值的结果。

例如,width: auto 的声明如果不了解元素祖先的布局,就无法解析为长度,因此计算值auto,而使用值是一个绝对长度,例如 100px[CSS2]

再举一个例子,一个 <div>break-before 计算值可能为 auto,但通过从其第一个子元素传播,获得了 page 的使用 break-before 值。[css-break-3]

如果一个属性不适用于该元素或框类型(正如其“Applies to”行中所述),那么它对该类型的框或元素没有直接的格式化影响,因此该属性没有使用值

例如,flex 属性在非弹性项目 (flex items) 的元素上没有使用值

注意:一些不适用于特定元素或框的属性可能仍然有间接的格式化影响:它们的计算值可能在计算对元素或框有影响的其他属性或单位时被考虑;继承的属性通常也会设置在不适用它们的元素上,以便将它们继承给适用它们的后代,包括这些后代是匿名框的情况。
即使 writing-modetext-orientation 不适用于表格行,在这些框上设置它们仍会影响字体相关单位(如 ch)的计算,从而可能影响任何采用 <length> 的属性。
在 HTML p 元素(默认情况下为 display: block)上设置 text-transform 会产生影响,尽管 text-transform 仅适用于内联框,因为该属性会继承到段落的匿名根内联框中。

注意:定义为适用于“所有元素”的属性适用于所有元素和显示类型,但不一定适用于所有伪元素类型,因为伪元素通常有其特定的渲染模型或其他限制。然而,::before::after 伪元素被定义为生成几乎与普通元素完全相同的框,因此被定义为接受所有适用于“所有元素”的属性。关于伪元素的更多信息,请参阅 [CSS-PSEUDO-4]

4.6. 实际值

使用值原则上已准备好使用,但用户代理可能无法在给定环境中利用该值。例如,用户代理可能只能以整数像素宽度渲染边框,因此可能必须近似使用宽度。此外,元素的字体大小可能需要根据字体可用性或 font-size-adjust 属性的值进行调整。实际值是进行此类调整后的使用值。

注:通过探测元素的实际值,可以了解文档是如何布局的。然而,并非所有信息都记录在实际值中。例如,page-break-after 属性的实际值并不反映元素之后是否有分页符。类似地,orphans 的实际值并不反映特定元素中有多少孤行。参见下表中的示例 (j) 和 (k)。

4.7. 示例

CSS 值计算示例
属性获胜声明层叠值指定值计算值使用值实际值
(a)text-align text-align: left left left left left left
(b)border-top-width, border-right-width, border-bottom-width, border-left-widthborder-width: inherit inherit 4.2px 4.2px 4.2px 4px
(c)width (none) (none) auto (初始值)auto 120px 120px
(d)list-style-position list-style-position: inherit inherit inside (内侧) inside (内侧) inside (内侧) inside (内侧)
(e)list-style-position list-style-position: initial 初始值 outside (初始值)outside (外侧) outside (外侧) outside (外侧)
(f)font-size font-size: 1.2em 1.2em 1.2em 14.1px 14.1px 14px
(g)width width: 80% 80% 80% 80% 354.2px 354px
(h)width width: auto auto auto auto 134px 134px
(i)height height: auto auto auto auto 176px 176px
(j)page-break-after (none) (none) auto (初始值)auto auto auto
(k)orphans (孀行) orphans: 3 3 3 3 3 3

5. 过滤

为了找到声明值,实现必须首先识别应用于每个元素的所有声明。如果以下情况成立,则声明适用于该元素:

对于每个元素上的每个属性,应用的声明值形成一个声明值列表。下一节,层叠,会对这些列表进行优先级排序。

6. 层叠

层叠获取给定元素上给定属性的声明值的无序列表,按下面确定的声明优先级对它们进行排序,并输出单个层叠值

6.1. 层叠排序顺序

层叠根据以下标准对声明进行排序,优先级由高到低:

来源和重要性
声明的来源基于其来源,其重要性在于是否用 !important 声明(见下文)。各种来源的优先级,按降序排列:
  1. 过渡声明 [css-transitions-1]
  2. 重要用户代理声明
  3. 重要用户声明
  4. 重要作者声明
  5. 动画声明 [css-animations-1]
  6. 普通 作者声明
  7. 普通 用户声明
  8. 普通 用户代理声明

此列表中排在前面的 来源 的声明优于排在后面的 来源 的声明。

特殊性
选择器模块 [SELECT] 描述了如何计算选择器的特指度(specificity)。每个声明都具有与其所在样式规则相同的特指度。为了本步骤的目的,不属于样式规则的声明(例如样式属性的内容)被视为具有高于任何选择器的特指度。具有最高特指度的声明胜出。
出现顺序
文档顺序中的最后一个声明胜出。为此
  • 来自导入样式表的声明的排序,就像它们的样式表被替换在 @import 规则的位置一样。
  • 由原始文档独立链接的样式表中的声明,被视为按链接顺序串联,具体顺序由宿主文档语言确定。
  • 来自 style 属性的声明按照出现该 style 属性的元素的文档顺序排列,并且全部置于所有样式表之后。

层叠输出是每个元素上每个属性的(可能为空的)已排序的声明值列表。

6.2. 级联来源

每个样式规则都有一个层叠来源,它决定了它进入层叠的位置。CSS 定义了三个核心来源

作者来源
作者根据文档语言的约定为源文档指定样式表。例如,在 HTML 中,样式表可以包含在文档中或外部链接。
用户来源
用户可能能够为特定文档指定样式信息。例如,用户可以指定一个包含样式表的文件,或者用户代理可能提供一个生成用户样式表(或表现得好像它生成了一个)的界面。
用户代理来源
符合标准的用户代理必须应用一个默认样式表(或表现得好像它应用了一个)。用户代理的默认样式表应该以满足文档语言一般表现预期的方式来呈现文档语言的元素(例如,对于视觉浏览器,HTML 中的 EM 元素使用斜体字体呈现)。参见例如 HTML 用户代理样式表[HTML]

CSS 的扩展定义了以下额外的来源

动画来源
CSS 动画 [css-animations-1] 在运行时生成表示其效果的“虚拟”规则。
过渡来源
与 CSS 动画一样,CSS 过渡 [css-transitions-1] 在运行时生成表示其效果的“虚拟”规则。

6.3. 重要声明:!important 注解

CSS 试图在作者样式表和用户样式表之间建立一种权力平衡。默认情况下,作者样式表中的规则会覆盖用户样式表中的规则,而用户样式表中的规则会覆盖用户代理默认样式表中的规则。为了平衡这一点,可以将声明标记为重要 (important),这会增加其在层叠中的权重并颠倒优先级顺序。

如果声明具有由 [css-syntax-3] 定义的 !important 注解,则该声明是重要的,即如果其值中的最后两个(非空格、非注释)标记是分隔符标记 ! 后跟标识符标记 important。所有其他声明都是正常的(非重要的)。

[hidden] { display: none !important; }

重要声明优先于正常声明。作者和用户样式表都可能包含重要声明,用户来源重要声明会覆盖作者来源重要声明。此 CSS 特性通过让有特殊需求的用户(大字体、颜色组合等)控制演示文稿,提高了文档的可访问性。

来自所有来源的重要声明优先于动画。这允许作者在重要情况下覆盖动画值。(动画值通常会覆盖所有其他规则。)[css-animations-1]

用户代理样式表也可能包含重要声明。这些声明会覆盖所有作者用户声明。

下面示例中用户样式表的第一条规则包含一个 !important 声明,它覆盖了作者样式表中的相应声明。第二条规则中的声明也会因被标记为 !important 而胜出。但是,用户样式表中的第三条声明不是 !important,因此会输给作者样式表中的第二条规则(该规则恰好在简写属性上设置了样式)。此外,第三条作者规则将输给第二条作者规则,因为第二个声明是 !important。这表明 !important 声明在作者样式表内也具有功能。
/* From the user’s style sheet */
p { text-indent: 1em !important }
p { font-style: italic !important }
p { font-size: 18pt }

/* From the author’s style sheet */
p { text-indent: 1.5em !important }
p { font: normal 12pt sans-serif !important }
p { font-size: 24pt }
属性胜出的值
text-indent 1em
font-style italic
font-size 12pt
font-family sans-serif

6.4. 非 CSS 表现性提示的优先级

UA 可以选择尊重源文档标记中的表现性提示,例如 [HTML] 中的 bgcolor 属性或 s 元素。所有基于文档语言的样式都必须转换为相应的 CSS 规则,并作为 UA 来源规则进入层叠,或者作为特指度为零且放置在作者样式表开头的作者来源规则来处理。文档语言可以定义此类表现性提示是作为 UA 来源还是作者来源进入层叠;如果定义了,UA 必须相应地运行。例如,[SVG11] 将其呈现属性映射到作者级别。

注意:作为 UA 来源规则进入层叠的表现性提示可以被作者来源用户来源样式覆盖。作为作者来源规则进入层叠的表现性提示可以被作者来源样式覆盖,但不能被非重要的用户来源样式覆盖。宿主语言在考虑这些因素时,应为表现性提示选择适当的来源。

7. 默认值

层叠没有产生值时,必须以其他方式找到指定值继承属性通过继承从其父元素获取默认值;所有其他属性采用其初始值。作者可以通过 inheritinitial 关键字显式请求继承或初始化。

7.1. 初始值

每个属性都有一个初始值,定义在属性的定义表中。如果该属性不是继承属性,并且层叠没有产生值,则该属性的指定值为其初始值

7.2. 继承

继承将属性值从父元素传播到其子元素。元素上属性的继承值是该属性在元素父元素上的计算值。对于没有父元素的根元素,其继承值是该属性的初始值

伪元素根据为每个伪元素描述的虚构标签序列进行继承。[SELECT]

有些属性是继承属性,定义在它们的属性定义表中。这意味着,除非层叠产生了值,否则该值将由继承确定。

属性也可以显式继承。参见 inherit 关键字。

注意: 继承遵循文档树,不会被 匿名框 拦截,也不会受到框树操作的影响。

7.3. 显式默认值

下面定义了几个 CSS 全局属性值;将属性声明为具有这些值会显式指定特定的默认行为。正如 CSS 值和单位 Level 3 [css-values-3] 中所指定的,所有 CSS 属性都可以接受这些值。

7.3.1. 重置属性:initial 关键字

如果属性的层叠值initial 关键字,则该属性的指定值为其初始值

7.3.2. 显式继承:inherit 关键字

如果属性的层叠值inherit 关键字,则该属性的指定值计算值是其继承值

7.3.3. 清除所有声明:unset 关键字

如果属性的层叠值unset 关键字,那么如果它是继承属性,则将其视为 inherit,如果不是,则将其视为 initial。此关键字有效地擦除了在层叠中较早出现的所有声明值,并根据属性(或简写的所有长手属性)的适当情况正确地继承或不继承。

8. 变更记录

8.1. 自 2020 年 12 月 22 日拟议推荐标准以来的变更

2020 年 12 月 22 日拟议推荐标准以来,本规范进行了以下变更:

8.2. 自 2018 年 8 月 28 日候选推荐标准以来的变更

2018 年 8 月 28 日候选推荐标准以来,本规范进行了以下变更:

8.3. 自 2016 年 5 月 19 日候选推荐标准以来的变更

2016 年 5 月 19 日候选推荐标准以来,本规范进行了以下非琐碎变更:

提供了评论处理说明 (Disposition of Comments)

8.4. 自 2013 年 10 月 3 日候选推荐标准以来的变更

2013 年 10 月 3 日候选推荐标准以来,本规范进行了以下变更:

提供了评论处理说明 (Disposition of Comments)

8.5. 自 Level 2 以来的新增内容

Level 2 以来添加了以下功能

致谢

David Baron、Simon Sapin 和 Boris Zbarsky 为本规范做出了贡献。

隐私与安全考虑

一致性

文档约定

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

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

本规范中的示例均以“例如”一词引入,或者通过 class="example" 与规范性文本隔开,如下所示

这是一个说明性示例。

说明性注释以“Note”一词开头,并使用 class="note" 与规范性文本隔开,如下所示

注意,这是一个说明性注释。

建议(Advisements)是规范性章节,旨在引起特别注意,并使用 <strong class="advisement"> 与其他规范性文本区分开来,如下所示: 用户代理必须提供可访问的替代方案。

一致性类别

本规范为三类一致性定义了一致性要求。

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

如果样式表包含的所有使用本模块定义语法的语句,根据通用 CSS 语法及本模块定义的各功能语法均有效,则该样式表符合本规范。

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

如果创作工具编写的样式表根据通用 CSS 语法及本模块中各功能的语法是句法正确的,并符合本模块中描述的所有其他样式表一致性要求,则该创作工具符合本规范。

部分实现

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

不稳定和专有特性的实现

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

非实验性实现

一旦规范达到候选推荐阶段,非实验性实现即可成为可能,实现者应发布他们能够证明根据规范正确实现的任何 CR 级别特性的无前缀实现。

为建立并保持 CSS 在不同实现间的互操作性,CSS 工作组请求非实验性的 CSS 渲染器在发布任何 CSS 功能的无前缀实现之前,向 W3C 提交一份实现报告(并在必要时提交用于该实现报告的测试用例)。提交给 W3C 的测试用例需经 CSS 工作组审阅和修正。

有关提交测试用例和实现报告的详细信息,请访问 CSS 工作组网站 https://w3org.cn/Style/CSS/Test/。问题可发送至 public-css-testsuite@w3.org 邮件列表。

索引

本规范定义的术语

通过引用定义的术语

引用

规范性引用

[CSS-ANIMATIONS-1]
Dean Jackson; 等人. CSS 动画 1 级. 2018年10月11日. WD. URL: https://w3org.cn/TR/css-animations-1/
[CSS-SYNTAX-3]
Tab Atkins Jr.; Simon Sapin. CSS 语法模块第 3 级. 2019年7月16日. CR. URL: https://w3org.cn/TR/css-syntax-3/
[CSS-TRANSITIONS-1]
David Baron; et al. CSS Transitions. 2018 年 10 月 11 日. 工作草案. URL: https://w3org.cn/TR/css-transitions-1/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS 值与单位模块第 3 级. 2019年6月6日. CR. URL: https://w3org.cn/TR/css-values-3/
[CSS-VARIABLES-1]
Tab Atkins Jr.. CSS Custom Properties for Cascading Variables Module Level 1. 3 December 2015. CR. URL: https://w3org.cn/TR/css-variables-1/
[CSS-WRITING-MODES-3]
Elika Etemad; Koji Ishii. CSS 书写模式 3 级。2019年12月10日。REC。URL:https://w3org.cn/TR/css-writing-modes-3/
[CSS2]
Bert Bos; et al. 层叠样式表第 2 级修订版 1 (CSS 2.1) 规范. 2011年6月7日. REC. URL: https://w3org.cn/TR/CSS21/
[css-conditional-3]
David Baron; Elika Etemad; Chris Lilley. CSS 条件规则模块 Level 3. 2020 年 12 月 8 日. CR. URL: https://w3org.cn/TR/css-conditional-3/
[FETCH]
Anne van Kesteren. Fetch 标准。现行标准。网址:https://fetch.spec.whatwg.org/
[HTML]
Anne van Kesteren; et al. HTML 标准。现行标准。网址:https://html.whatwg.cn/multipage/
[MEDIAQ]
Florian Rivoal; Tab Atkins Jr.. 媒体查询 Level 4. 2020 年 7 月 21 日. CR. URL: https://w3org.cn/TR/mediaqueries-4/
[RFC2119]
S. Bradner. RFC 中用于指示需求级别的关键词. 1997 年 3 月. 最佳当前实践. URL: https://tools.ietf.org/html/rfc2119
[SELECT]
Tantek Çelik; et al. 选择器 3 级。2018年11月6日。REC。URL:https://w3org.cn/TR/selectors-3/
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. 选择器 4 级. 2018年11月21日. WD. URL: https://w3org.cn/TR/selectors-4/

参考资料

[CSS-ALIGN-3]
Elika Etemad; Tab Atkins Jr.. CSS 盒对齐模块 第3级. 2020年4月21日. WD. URL: https://w3org.cn/TR/css-align-3/
[CSS-BACKGROUNDS-3]
Bert Bos; Elika Etemad; Brad Kemper. CSS 背景与边框模块 3 级. 2017年10月17日. CR. URL: https://w3org.cn/TR/css-backgrounds-3/
[CSS-BREAK-3]
Rossen Atanassov; Elika Etemad. CSS 碎片化模块第 3 级. 2018 年 12 月 4 日. 候选推荐标准 (CR). URL: https://w3org.cn/TR/css-break-3/
[CSS-BREAK-4]
Rossen Atanassov; Elika Etemad. CSS 碎片化模块第 4 级. 2018 年 12 月 18 日. 工作草案 (WD). URL: https://w3org.cn/TR/css-break-4/
[CSS-DISPLAY-3]
Tab Atkins Jr.; Elika Etemad. CSS 显示模块 第3级. 2020年12月18日. CR. URL: https://w3org.cn/TR/css-display-3/
[CSS-FLEXBOX-1]
Tab Atkins Jr.; 等. CSS 弹性盒布局模块第 1 级. 2018 年 11 月 19 日. 候选推荐标准 (CR). URL: https://w3org.cn/TR/css-flexbox-1/
[CSS-FONTS-3]
John Daggett; Myles Maxfield; Chris Lilley. CSS 字体模块 3 级. 2018年9月20日. REC. URL: https://w3org.cn/TR/css-fonts-3/
[CSS-INLINE-3]
Dave Cramer; Elika Etemad; Steve Zilles. CSS 内联布局模块 Level 3. 2020 年 8 月 27 日. WD. URL: https://w3org.cn/TR/css-inline-3/
[CSS-LISTS-3]
Elika Etemad; Tab Atkins Jr.. CSS 列表和计数器模块 Level 3. 2020 年 11 月 17 日. WD. URL: https://w3org.cn/TR/css-lists-3/
[CSS-PAGE-3]
Elika Etemad; Simon Sapin. CSS 分页媒体模块第 3 级. 2018 年 10 月 18 日. 工作草案 (WD). URL: https://w3org.cn/TR/css-page-3/
[CSS-PSEUDO-4]
Daniel Glazman; Elika Etemad; Alan Stearns. CSS 伪元素模块 Level 4. 2019 年 2 月 25 日. WD. URL: https://w3org.cn/TR/css-pseudo-4/
[CSS-SIZING-3]
Tab Atkins Jr.; Elika Etemad. CSS 盒尺寸模块 Level 3. 2020 年 12 月 18 日. WD. URL: https://w3org.cn/TR/css-sizing-3/
[CSS-TEXT-3]
Elika Etemad; Koji Ishii; Florian Rivoal. CSS 文本模块 Level 3. 2020 年 11 月 19 日. WD. URL: https://w3org.cn/TR/css-text-3/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS 书写模式第 4 级. 2019年7月30日. CR. URL: https://w3org.cn/TR/css-writing-modes-4/
[CSSOM]
Simon Pieters; Glenn Adams. CSS 对象模型 (CSSOM). 2016年3月17日. WD. URL: https://w3org.cn/TR/cssom-1/
[SVG11]
Erik Dahlström; 等人. 可缩放矢量图形 (SVG) 1.1 (第二版). 2011年8月16日. REC. URL: https://w3org.cn/TR/SVG11/

属性索引

名称初始值应用于继承百分比动画类型 (Animation type)规范顺序计算值
all initial | inherit | unset见各个属性见各个属性见各个属性见各个属性见各个属性按语法见各个属性