CSS 显示模块第 3 级

W3C 候选推荐快照,

关于本文档的更多详细信息
此版本:
https://www.w3.org/TR/2023/CR-css-display-3-20230330/
最新发布版本:
https://www.w3.org/TR/css-display-3/
编辑草案:
https://drafts.csswg.org/css-display/
历史记录:
https://www.w3.org/standards/history/css-display-3
实现报告:
https://wpt.fyi/results/css/css-display?label=master&label=experimental&aligned
测试套件:
http://test.csswg.org/suites/css-display-3_dev/nightly-unstable/
https://wpt.fyi/results/css/css-flexbox/
反馈:
CSSWG 问题库
编辑者:
Tab Atkins Jr. (谷歌)
Elika J. Etemad / fantasai (受邀专家)
建议对本规范进行编辑:
GitHub 编辑器

摘要

该模块描述了如何从文档元素树生成 CSS 格式化框树,并定义了控制它的 display 属性。

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

本文档状态

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

本文档由 CSS 工作组 作为 候选推荐快照 发布,使用了 推荐轨道。 发布为候选推荐 不代表 W3C 及其成员的认可。 候选推荐快照已获得 广泛评审, 旨在收集实施经验,并且工作组成员承诺为实施提供 免版税许可。 本文档拟成为 W3C 推荐标准; 在 2023 年 5 月 30 日之前,它将保持候选推荐状态,以收集更多反馈。

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

本文档由 2021 年 11 月 2 日的 W3C 流程文档 管理。

本文档由在 W3C 专利政策 下运营的工作组生成。 W3C 维护了一个 公开的专利披露列表, 该页面还包括披露专利的说明。 如果个人实际知道某项专利,并认为该专利包含 必要声明, 则必须根据 W3C 专利政策第 6 节 披露信息。

初步实施报告可用。 在 CR 期间将添加更多测试。

以下功能存在风险,可能会在 CR 阶段被删除:

“At-risk” 是 W3C 流程中的一个术语,并不一定意味着该功能有被删除或延迟的危险。它意味着工作组认为该功能可能难以及时实现互操作性, 并且标记为此状态允许工作组在必要时,在转入提议推荐阶段时删除该功能,而无需首先发布没有该功能的候选推荐。

1. 介绍

本节为规范性内容。

CSS 将一个源文档组织为一个 元素树元素(它可以包含其他 元素文本节点 的混合) 和 文本节点(它可以包含文本), 并将其呈现到一个 画布 上,比如屏幕、纸张或音频流。 虽然任何此类源文档都可以使用 CSS 渲染, 但最常用的类型是 DOM。 [DOM](一些更复杂的树类型可能具有其他类型的节点, 例如 DOM 中的注释节点。 对于 CSS 的目的, 所有这些附加类型的节点都将被忽略, 就像它们不存在一样。)

为此,CSS 生成了一个中介结构, 即 盒子树, 它代表了渲染文档的格式结构。 盒子树 中的每个 盒子 代表它在画布上的对应 元素(或 伪元素) 的空间和/或时间表现, 而 文本序列 也同样代表其对应的 文本节点 的内容。

为了创建 盒子树, CSS 首先使用 层叠和继承, 为源树中的每个 元素文本节点 分配每个 CSS 属性的 计算值。 (参见 [CSS-CASCADE-3]。)

接着,CSS 为每个 元素 生成一个或多个 盒子,根据该元素的 display 属性进行指定。 通常,元素会生成一个 盒子, 该 主盒子 代表自身,并在 盒子树 中包含其内容。 然而,某些 display 值 (如 display: list-item) 会生成多个盒子 (例如,一个 主块盒子 和一个子 标记盒子)。 一些值 (例如 nonecontents) 会导致 元素 和/或其后代不生成任何 盒子盒子 通常根据其 display 类型命名——例如,一个由具有 display: block 的元素生成的 盒子 被称为“块盒子”或简称“块”。

盒子 被分配与其生成的 元素 相同的样式,除非另有说明。 通常,继承属性 被分配给 主盒子, 然后在盒子树中继承 给同一元素生成的任何其他盒子。 非继承属性默认适用于 主盒子, 但当元素生成多个盒子时, 有时会被定义为适用于不同的盒子: 例如,应用于表格元素的 border 属性会应用于其 表格网格盒子, 而不是其 表格包装盒子。 如果值计算过程改变了这些盒子的样式, 并且请求元素的样式 (例如通过 getComputedStyle()), 则该元素会反映每个属性对应的被应用到的盒子的值。

类似地,每个相邻的 文本节点 序列生成一个 文本序列,包含它们的文本内容, 并被分配与生成的 文本节点 相同的样式。 如果该序列不包含文本,则不会生成 文本序列

在构建盒子树时, 由元素生成的盒子是任何祖先元素的主盒子的后代。 通常情况下, 元素的 主盒子 的直接 父盒子 是其最近的生成 盒子 的祖先元素的 主盒子; 然而,也有一些例外, 例如 run-in 盒子、 生成多个容器盒子的显示类型(如表格), 以及介入的 匿名盒子

匿名盒子 是不与任何元素关联的盒子。匿名盒子 在某些情况下生成, 以修复当 盒子树 需要特定嵌套结构时, 而这些结构未由 元素树 生成的盒子提供。 例如,一个 表格单元格盒子 需要特定类型的父盒子(表格行盒子), 如果其父级不是 表格行盒子,它将生成一个 匿名 表格行盒子。 (参见 [CSS2] § 17.2.1。) 与元素生成的盒子不同,它们的样式严格通过元素树继承, 匿名盒子(仅存在于 盒子树 中)通过其 盒子树 父系继承样式。

在布局过程中,盒子文本序列 可能会被分解为多个 片段。 例如,当 内联盒子 和/或 文本序列 被分割成多行时, 或当 块盒子 被分割成跨页面或列时, 这种过程称为 分段。 它还可能由于文本的双向重排而发生 (参见 应用双向重排算法CSS 书写模式) 或者是由于更高级别的 显示类型 盒子分裂, 例如 块内联分裂(参见 CSS2§9.2) 或 列跨距分裂 (参见 CSS 多列布局)。 因此,一个 盒子 由一个或多个 盒子片段 组成, 而一个 文本序列 由一个或多个 文本片段 组成。 有关 分段 的更多信息,参见 [CSS-BREAK-3]

注意: 许多 CSS 规范是在这些术语确定之前编写的, 或错误地使用了术语, 因此在阅读旧规范时应小心使用这些术语。 应该可以从上下文中推断出它们实际的含义。 请在发现错误时 报告规范中的错误, 以便进行更正。

注意: 有关“听觉”盒子树及其与 display 属性交互的更多信息, 可以在 CSS 语音模块 中找到。 [CSS-SPEECH-1]

1.1. 模块交互

本模块替代并扩展了 display 属性的定义,最初定义于 [CSS2] 第 9.2.4 节。

本模块中的任何属性都不适用于 ::first-line::first-letter 伪元素。

1.2. 值定义

本规范遵循 CSS 属性定义约定,来自 [CSS2],并使用 值定义语法,来自 [CSS-VALUES-3]。 本规范未定义的值类型由 CSS 值与单位模块 [CSS-VALUES-3] 定义。 与其他 CSS 模块结合时,可能会扩展这些值类型的定义。

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

2. 盒子布局模式:display 属性

名称: display
值: [ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy>
初始值: inline
适用于: 所有元素
继承:
百分比: 不适用
计算值: 一对关键字,代表内部外部显示类型加上可选的list-item标志,或<display-internal><display-box>关键字;有关计算规则的详细说明,参见各规范的详细说明
规范顺序: 按语法规则
动画类型: 不可动画化

用户代理应支持此属性在所有媒体上,包括非视觉媒体。 display 属性定义元素的 显示类型, 包含元素如何生成盒子的两个基本特性:

文本序列没有 显示类型

某些 display 值有额外的副作用: 例如 list-item,它还会生成一个 ::marker 伪元素, 以及 none,它会导致元素的整个子树从盒子树中省略。

display 属性不会影响元素的语义: 这些由 文档语言 定义,并不会受 CSS 影响。 除了 none 值外, 它还会影响元素及其后代的听觉/语音输出 [CSS-SPEECH-1] 和交互性, display 属性仅影响视觉布局: 它的目的是允许设计人员自由 更改元素的布局行为,而不影响底层文档的语义。

值定义如下:

<display-outside>  = block | inline | run-in
<display-inside>   = flow | flow-root | table | flex | grid | ruby
<display-listitem> = <display-outside>? && [ flow | flow-root ]? && list-item
<display-internal> = table-row-group | table-header-group |
                     table-footer-group | table-row | table-cell |
                     table-column-group | table-column | table-caption |
                     ruby-base | ruby-text | ruby-base-container |
                     ruby-text-container
<display-box>      = contents | none
<display-legacy>   = inline-block | inline-table | inline-flex | inline-grid

以下信息表总结了 display 的值:

简短 display 完整 display 生成的盒子
none 子树从 盒子树 中省略
contents 元素在 盒子树 中被内容替换
block block flow 块级 块容器 aka 块盒子
flow-root block flow-root 块级 块容器,创建新的 块格式化上下文 (BFC)
inline inline flow 内联盒子
inline-block inline flow-root 内联级 块容器 aka 内联块
run-in run-in flow run-in 盒子 (内联盒子,带有特殊的盒子树处理规则)
list-item block flow list-item 块盒子,带有附加的 标记盒子
inline list-item inline flow list-item 内联盒子,带有附加的 标记盒子
flex block flex 块级 弹性容器
inline-flex inline flex 内联级 弹性容器
grid block grid 块级 网格容器
inline-grid inline grid 内联级 网格容器
ruby inline ruby 内联级 ruby 容器
block ruby block ruby 块盒子,包含 ruby 容器
table block table 块级 表格包装盒子,包含 表格网格盒子
inline-table inline table 内联级 表格包装盒子,包含 表格网格盒子
<display-internal> 类型 布局特定内部盒子

注意: 根据“最兼容向后兼容规则,然后最短”的优先规则,等效的 display 值的序列化使用“简短 display”列。 [CSSOM]

2.1. 外部显示角色用于流布局:blockinlinerun-in 关键字

<display-outside> 关键字指定元素的 外部显示类型,本质上是其 主盒子流布局 中的角色。定义如下:

block
该元素在 流布局 中生成一个 块级盒子[CSS2]
inline
该元素在 流布局 中生成一个 内联级盒子[CSS2]
run-in
该元素生成一个 run-in 盒子,这是一种 内联级盒子,具有特殊行为,尝试将其合并到后续的块容器中。 详情参见 § 5 Run-In 布局

注意: 外部显示类型 确实会影响 替换元素

如果指定了 <display-outside> 值,但省略了 <display-inside>,则元素的 内部显示类型 默认为 flow

2.2. 内部显示布局模型:flowflow-roottableflexgridruby 关键字

<display-inside> 关键字指定元素的 内部显示类型,定义了布局其内容的格式化上下文的类型(假设它是 非替换元素)。定义如下:

flow
该元素使用 流布局 (块和内联布局) 来布局其内容。

如果它的 外部显示类型inlinerun-in,并且它参与了 内联 格式化上下文,那么它会生成一个 内联盒子

否则,它会生成一个 块容器盒子。

根据其他属性的值(例如 positionfloatoverflow)以及它本身是否参与了块或内联 格式化上下文,它要么为其内容建立一个新的 块格式化上下文,要么将其内容集成到其父级的 格式化上下文 中。参见 CSS2.1 第九章[CSS2] 一个 块容器 如果为其内容建立了一个新的 块格式化上下文,则被认为具有使用的内部显示类型 flow-root

flow-root
该元素生成一个 块容器 盒子,并使用 流布局 来布局其内容。它总是为其内容建立一个新的 块格式化上下文[CSS2]
table
该元素生成一个主 表格包装盒子,为其内容建立一个 块格式化上下文,并包含一个另外生成的 表格网格盒子,该盒子建立一个 表格格式化上下文[CSS2]
flex
该元素生成一个主 弹性容器 盒子,并建立一个 弹性格式化上下文[CSS-FLEXBOX-1]
grid
该元素生成一个主 网格容器 盒子,并建立一个 网格格式化上下文[CSS-GRID-1]

(使用 子网格 的网格可能不会生成新的 网格格式化上下文;详情参见 [CSS-GRID-2]。)

ruby
该元素生成一个 ruby 容器 盒子,并建立一个 ruby 格式化上下文,此外还将其基础级内容集成到其父级 格式化上下文 中(如果它是内联的),或者如果它不是内联的,则生成一个适当 外部显示类型 的包装盒子。[CSS-RUBY-1]

如果指定了 <display-inside> 值,但省略了 <display-outside>,则元素的 外部显示类型 默认为 block—除了 ruby,它默认为 inline

2.3. 生成标记框:list-item 关键字

list-item 关键字 使元素生成一个 ::marker 伪元素 [CSS-PSEUDO-4],其内容由 list-style 属性指定 (CSS 2.1§12.5 列表) [CSS2],并带有一个用于其自身内容的指定类型的主体框。

如果没有指定内部显示类型 值, 主体框的内部显示类型默认设置为 flow。 如果没有指定外部显示类型 值, 主体框的外部显示类型默认设置为 block

注意:在该级别中,由于语法限制, list-items 限制在 流布局 显示类型 (block/inline/run-in, 内部类型为 flow/flow-root)。 该限制可能会在该模块的未来级别中放宽。

2.4. 布局内部显示类型:table-*ruby-* 关键字

一些布局模型,如 表格ruby, 具有复杂的内部结构, 其子元素和后代元素可以承担不同的角色。 本节定义了这些“布局内部display 值, 它们只在特定的布局模式中有意义。

除非另有说明, 使用这些 display 值的元素的 内部显示类型外部显示类型 都将设置为给定的关键字。

display 属性计算为其中一个 布局内部 值时, 它将被视为具有 inline 的使用值。 基于该 inline 值,必须在这些替换元素周围进行空白折叠和匿名框生成, 仿佛它们从未应用过 布局内部 的显示值。

作者不应为 布局内部 显示值分配给 替换元素

<display-internal> 关键字定义如下:

table-row-group, table-header-group, table-footer-group, table-row, table-cell, table-column-group, table-column
该元素是一个内部表格元素。 它生成合适的 内部表格框, 并参与 表格格式化上下文。 参见 CSS2§17.2 [CSS2]

table-cell 框具有 flow-root 内部显示类型

table-caption
该元素生成一个 表格标题框, 它是一个具有与表格和表格包装框相关的特殊行为的 块框。 参见 CSS2§17.2 [CSS2]

table-caption 框具有 flow-root 内部显示类型

ruby-base, ruby-text, ruby-base-container, ruby-text-container
该元素是一个内部 ruby 元素。 它生成合适的 内部 ruby 框, 并参与 ruby 格式化上下文[CSS-RUBY-1]

ruby-baseruby-text 具有 flow 内部显示类型

具有布局特定显示类型的框在放置于不兼容的父元素时会在其周围生成匿名包装框, 如其各自的规范所定义。

例如,表格布局要求 table-cell 框 必须具有 table-row 父框。

如果它被错误地父化,如下所示:

<div style="display:block;">
  <div style="display:table-cell">...</div>
</div>

它将在其周围生成包装框, 生成如下结构:

块框
└匿名表格框
 └匿名表格行组框
  └匿名表格行框
   └表格单元框

即使父元素是另一个 内部表格元素, 如果它不是正确的, 将生成包装框。 例如,在以下标记中:

<div style="display:table;">
  <div style="display:table-row">
    <div style="display:table-cell">...</div>
  </div>
</div>

匿名包装框生成将生成:

表格框
└匿名表格行组框
 └表格行框
  └表格单元框

此“修复”确保表格布局具有可预测的结构来进行操作。

2.5. 框生成:nonecontents 关键字

虽然 display 可以控制元素将生成的框的类型, 它也可以控制元素是否会生成任何框。

<display-box> 关键字定义如下:

contents
元素本身不会生成任何框, 但它的子元素和伪元素仍然会像往常一样生成文本序列。 出于框生成和布局的目的, 元素必须被视为在元素树中被其内容替换 (包括其源文档子元素及其伪元素, 如 ::before::after 伪元素, 这些伪元素与元素的子元素一样正常生成)。

注意:由于只影响框树, 基于文档树的任何语义, 如选择器匹配、事件处理, 和属性继承, 都不受影响。然而,截至撰写本文时,这一功能尚未在主流浏览器中正确实现, 因此在Web上使用此功能时必须谨慎, 因为它可能会阻止辅助工具 访问元素的语义。

此值在替换元素上计算为 display: none, 以及其他渲染不完全由CSS控制的元素; 详情请参见 附录B:display: contents 对异常元素的影响

注意:替换元素和表单控件被特殊处理, 因为仅移除元素自身的生成框是一个或多或少未定义的操作。 由于如果用例(以及更精确的渲染模型)发展,这种行为可能会被改进, 因此作者应使用 display: none 而不是 display: contents 在此类元素上 以保证向前兼容性。

none
元素及其后代不会生成 文本序列

同样地,如果一个文本节点 被定义为行为类似于 display: none, 它将不会生成 文本序列

具有这两个值的元素没有 内部外部显示类型, 因为它们根本不会生成任何框。

注意:由于这些值使受影响的元素不生成框, 匿名框生成规则将完全忽略这些省略的元素, 仿佛它们在框树中不存在。

然而,基于标记的关系不受这些值的影响, 因为它们仅是渲染时的效果。例如, 虽然它们可能会影响哪个表格单元出现在一列中, 但它们不会影响哪个表格单元与特定列元素关联。 同样,它们不能影响哪个HTML summary 元素与特定表格关联 或者是否 legend 被认为是在标记特定 fieldset 的内容。

2.6. 预组合的内联级显示值

CSS 第2级使用单关键字语法来表示display, 需要为相同布局模式的块级和内联级变体分别使用不同的关键字。 这些<display-legacy> 关键字映射如下:

inline-block
计算为 inline flow-root
inline-table
计算为 inline table
inline-flex
计算为 inline flex
inline-grid
计算为 inline grid

注意:尽管这些关键字及其等价物计算为相同的值, 它们的指定值仍然是不同的。

注意:getComputedStyle() 序列化规则 总是会输出这些预组合的关键字, 而不是等效的双关键字对, 这是由于最短、最具向后兼容性的序列化原则

2.7. 自动框类型转换

某些布局效果需要对框类型进行块化内联化, 这会将框的计算外部显示类型分别设置为blockinline。 (这对不生成框的显示类型没有影响, 例如 nonecontents。) 此外:

注意:在框与其上下文不匹配时,有两种方法用于修正框类型。 一种是转换计算值display,如这里描述的块化内联化。 另一种是在框树构建期间发生的(在计算值确定之后), 是创建中间的匿名框, 就像在表格ruby、 和布局中发生的那样。

一些计算值修正的示例包括:

2.8. 根元素的主框

根元素的显示类型总是 块化的, 并且其主框总是建立一个 独立的格式化上下文。 该框的包含块初始包含块

此外,根元素的 displaycontents 时,将计算为 block

3. 显示顺序:order 属性

名称: order
值: <integer>
初始值: 0
适用于: 弹性项网格项
是否继承:
百分比: 不适用
计算值: 指定的整数
规范顺序: 根据语法
动画类型: 根据计算值类型

框通常按照它们在源文档中出现的顺序显示和布局。 在某些格式化上下文中, 可以使用 order 属性重新排列框的顺序, 从而故意造成元素的逻辑顺序 与它们在二维视觉画布上的空间排列之间的差异。 (参见 § 3.1 重新排序与可访问性。)

具体来说, order 属性控制 弹性项网格项 在其容器内出现的顺序, 通过将它们分配到序号组。 它接受一个 <integer> 值, 指定该项属于哪个序号组。

以下是一个商品卡片的示例, 包含标题、照片和描述。 在每个条目中,源文档内容逻辑顺序是标题在前,接着是描述和照片。 这为语音渲染和非CSS浏览器提供了合理的顺序。 然而,为了获得更吸引人的视觉展示,使用 order 将图像从内容的后面拉到卡片的顶部。
article.sale-item {
  display: flex;
  flex-flow: column;
}
article.sale-item > img {
  order: -1; /* 将图像在布局顺序中移到其他内容之前 */
  align-self: center;
}
<article class="sale-item">
  <h1>Computer Starter Kit</h1>
  <p>This is the best computer money can buy, if you don’t have much money.
  <ul>
    <li>Computer
    <li>Monitor
    <li>Keyboard
    <li>Mouse
  </ul>
  <img src="images/computer.jpg"
    alt="您将获得:一台带有匹配外设的白色台式电脑。" >
</article>
您将获得:一台带有匹配的键盘和显示器的白色台式电脑。

Computer Starter Kit

这是您能买到的最好的电脑, 如果您没有太多钱。

  • 电脑
  • 显示器
  • 键盘
  • 鼠标
上述代码的示例渲染。

弹性盒网格容器按其内容的顺序修改的文档顺序进行布局,从最小编号的序号组开始,逐渐增加。 具有相同序号组的项目按照它们在源文档中出现的顺序进行布局。 这也会影响绘制顺序 [CSS2], 就像弹性盒项目/网格项目在源文档中被重新排序一样。 绝对定位的弹性盒/网格容器的子项在确定其相对于弹性盒项目/网格项目的绘制顺序时,被视为具有order: 0

除非未来规范另有规定, 此属性对不是 弹性项网格项 的框没有效果。

3.1. 重新排序与可访问性

order 属性不会影响非视觉媒体中的顺序 (如语音)。 同样,order 也不会影响 顺序导航模式的默认遍历顺序 (例如,循环浏览链接,参见 tabindex [HTML])。

作者必须仅将 order 用于空间而非逻辑的内容重新排序。 使用 order 执行逻辑重新排序的样式表是 不符合规范的。

注意:这样做是为了确保非视觉媒体和非CSS用户代理, 通常线性展示内容时, 可以依赖逻辑源顺序, 而order 用于调整布局顺序。 (由于视觉感知是二维且非线性的, 所以期望的布局顺序不总是逻辑顺序。)

为了在所有展示模式中保留作者意图的顺序, 作者工具——包括所见即所得编辑器以及基于Web的创作辅助工具——必须重新排序底层文档源 而不是使用 order 来执行重新排序, 除非作者明确表示 空间顺序应与 底层文档顺序(决定语音和导航顺序)不同步

例如,一个工具可能提供拖放重新排序弹性项的功能, 以及根据屏幕尺寸范围处理不同布局的媒体查询功能。

由于大多数情况下,重新排序应影响所有屏幕范围, 以及导航和语音顺序, 该工具会在DOM层执行拖放重新排序。 然而,在某些情况下,作者可能希望根据屏幕尺寸使用不同的布局。 该工具可以通过将 order 与媒体查询结合使用来提供此功能, 但也将最小屏幕尺寸的顺序与底层DOM顺序绑定 (因为这很可能是逻辑线性展示顺序), 同时在其他尺寸范围中使用 order 来定义视觉展示顺序。

此工具是符合规范的,而一个仅使用 order 来处理 拖放重新排序的工具 (尽管这样实现可能更方便) 将是不符合规范的。

注意:用户代理,包括浏览器、辅助技术和扩展, 可能提供空间导航功能。 本节并不排除在这些空间导航模式中尊重 order 属性; 实际上,为了使此功能有效,需要考虑该属性。 但 order 并不是这种空间导航功能 唯一需要考虑的(甚至不是最主要的)CSS属性。 一个良好实现的空间导航功能需要考虑所有修改空间关系的CSS布局特性。

4. 不可见性:visibility 属性

名称: visibility
值: visible | hidden | collapse
初始值: visible
适用于: 所有元素
是否继承:
百分比: 不适用
计算值: 按照指定值
规范顺序: 根据语法
动画类型: 离散
媒体: 视觉

visibility 属性指定框是否被渲染。不可见的框仍然影响布局。 (将 display 属性设置为 none,以完全禁止生成框。) 值的含义如下:

visible
生成的框可见,正常显示。
hidden
由元素生成的任何框都是不可见的。 然而,如果它们的visibility: visible 被设置为可见, 元素的后代可以是可见的。
collapse
表示框被折叠, 这可能会根据格式化上下文特定的方式占用比正常情况下更少的空间。 请参见 表格中的动态行和列效果 [CSS2]弹性布局中的折叠弹性项 [CSS-FLEXBOX-1]。 但是,在所有其他情况下, (即除非另有说明) 这只会使框不可见, 就像 hidden 一样。

注意:目前,许多用户代理和/或辅助工具 尚未正确实现 可见元素与不可见元素之间的语义关系的可访问性影响, 因此,例如, 将具有特殊角色的父元素(如表格行)设置为 不可见,而让具有特殊角色的子元素(如表格单元格)保持可见 可能会对这些工具的用户造成问题。 作者应避免创建这些情况, 直到工具情况有所改善。

不可见的框不会被渲染 (就像它们完全透明一样), 无法与之交互 (表现得像它们具有 pointer-events: none), 被移除出导航 (类似于 display: none), 并且不会渲染为语音 (除非 speakalways [CSS-SPEECH-1])。 但是,与 display: contents 类似, 它们作为容器的语义角色不受影响, 以确保任何 可见 的后代 能够被正确解释。

注意:如果 speak 设置为 always, 那么即使是不可见的框也被语音渲染, 并且可以使用非视觉/空间的方法与之交互。

虽然使用 display: none 暂时隐藏内容通常是足够的, 但这样做会完全将元素从布局中移除, 当一个元素被隐藏或显示时,可能会导致不必要的页面移动或重排。 visibility: hidden 可以用来在隐藏和显示内容时 保持页面布局的稳定性。

例如, 这里有一个(故意简化的)可能实现的“剧透”元素, 可以通过点击隐藏的文本来显示内容:

<p>电影前面的象征性暗示在结尾处变得显而易见,
  当揭示出<spoiler-text><span>卢克是他自己的父亲</span></spoiler-text>时,
  巫师的隐晦谜语才变得有意义。
<style>
spoiler-text { border-bottom: 1px solid; }
spoiler-text > span { visibility: hidden; }
spoiler-text.shown > span { visibility: visible; }
</style>
<script>
[...document.querySelectorAll("spoiler-text")].forEach(el=>{
  el.addEventListener("click", e=>el.classList.toggle("shown"));
});
</script>

此示例故意简化了很多。 它缺少许多设计良好的剧透元素应具备的可访问性和用户体验功能, 只是为了更直接地展示 visibility 的用法。 不要将此代码用于真实网站。

5. 运行布局

运行框 是一个合并到其后的块中的框, 将自己插入到该块的内联级内容的开头。 这对于格式化紧凑的标题、定义和其他类似内容很有用, 在这些情况下,适当的DOM结构是让标题在后面的段落前面, 但期望的显示效果是内联标题与文本一起布局。

例如,字典定义通常被格式化为单词与定义在同一行:
<dl class='dict'>
  <dt>dictionary
  <dd>a book that lists the words of a language in alphabetical
      order and gives their meaning, or that gives the equivalent
      words in a different language.
  <dt>glossary
  <dd>an alphabetical list of terms or words found in or relating
      to a specific subject, text, or dialect, with explanations; a
      brief dictionary.
</dl>
<style>
.dict > dt {
  display: run-in;
}
.dict > dt::after {
  content: ": "
}
</style>

格式化为:

dictionary: a book that lists the words of a language
in alphabetical order and explains their meaning.

glossary: an alphabetical list of terms or words found
in or relating to a specific subject, text, or dialect,
with explanations; a brief dictionary.

运行框的行为与其他内联级框完全一样, 除非:

运行序列 是一组最大的连续兄弟运行框及其间的空白和/或脱流框。

注意:此说明意味着脱流框如果位于两个运行框之间,则会重置父级。 另一种选择是留下中间的脱流框, 或者让脱流框阻止前一个框的运行。 实施者和作者被鼓励联系CSS工作组,如果他们有首选的行为,因为这个行为是随机选择的。

此修正发生在CSS2§9.2中描述的匿名块和内联框修正之前, 并且影响受影响元素的第一行格式化线的确定, 就像运行序列最初就在框树中的最终位置一样。

注意:由于最早的运行框代表其包含块的第一行格式化线上的第一个文本, 应用于该块元素的::first-letter伪元素选择运行框的第一个字母, 而不是其自身内容的第一个字母。

注意:此运行模型与早期修订版中提出的模型略有不同[CSS2]

附录 A: 术语表

以下术语为方便起见进行定义:

根元素
文档树中元素的根部。 在 DOM 生成的文档树中, 它是文档元素; 在 HTML 中,它是 html 元素。[DOM] [HTML]
主要框
元素生成一个或多个时, 其中一个是主要框, 它包含其后代框和生成的内容, 并且是涉及任何定位方案的框。

某些元素可能除了主要框之外还生成其他框 (例如列表项元素, 它们生成一个额外的标记框, 或表格元素, 它们生成一个主要 表包装框和一个额外的表格网格框)。 这些额外的框是相对于主要框放置的。

内联级
参与内联布局的内容。 具体来说,是内联级框和文本序列
块级
参与块布局的内容。 具体来说,是块级框。
内联框
一个非替换的内联级 框,其内部显示类型。 内联框的内容参与与内联框本身相同的内联格式化上下文。
内联
用作内联框内联级框的简写,若无歧义, 或作为形容词表示内联级。 后一种用法已弃用。
原子内联
一个被替换的内联级框(例如图像) 或者是一个建立新格式化上下文的框(例如内联块内联表格), 并且无法跨行分割 (内联框ruby 容器则可以)。

任何其内部显示类型不是的内联级框 会建立一个指定的新的格式化上下文,内部显示类型

块容器
一个块容器只包含参与内联格式化上下文的内联级框, 或者只包含参与块格式化上下文的块级框(可能会生成匿名块框来确保这一约束, 如CSS2 §9.2.1.1中定义的那样)。

一个只包含内联级内容的块容器会建立一个新的内联格式化上下文。 该元素还会生成一个根内联框,它包裹了所有的内联内容。注意,这个根内联框的概念 有效地替代了在CSS2 §9.2.2.1中引入的“匿名内联元素”概念。

如果其父级格式化上下文不是块格式化上下文, 那么块容器会建立一个新的块格式化上下文; 否则,当块容器参与到一个块格式化上下文时, 它会根据其他属性的限制(例如overflowalign-content), 要么为其内容建立一个新的块格式化上下文, 要么继续参与它所在的格式化上下文。

注意:一个块容器框可以同时建立块格式化上下文和内联格式化上下文。

块框
一个既是块级框,也是块容器的框。

注意:并非所有的块容器框都是块级框: 例如,非替换的内联块和非替换的表格单元格, 它们是块容器,但不是块级框。 同样,也并非所有的块级框都是块容器: 例如,块级替换元素(display: block) 和弹性容器(display: flex), 并不是块容器。

用作块框块级框,或块容器框的简写, 在上下文明确时使用。
替换元素
一个内容不在CSS格式化模型范围内的元素, 如图像或嵌入文档。 例如,HTML中 img元素的内容 通常由其 src属性指定的图像替代。

替换元素通常具有自然尺寸。 例如,位图图像有一个以绝对单位指定的自然宽度和自然高度 (可以由此显然确定自然比例)。 另一方面,其他对象可能没有任何自然尺寸 (例如,一个空白的HTML文档)。 参见[css-images-3]

用户代理可能会认为替换元素没有任何自然尺寸, 如果认为这些尺寸可能会向第三方泄露敏感信息。 例如,如果HTML文档的自然大小根据用户的银行余额变化, 那么UA可能希望将该资源视为没有自然尺寸

替换元素的内容不被认为属于CSS格式化模型; 然而,它们的自然尺寸会在各种布局计算中使用。 替换元素总是会建立一个独立的格式化上下文

非替换元素是 一个没有被替换的元素, 即其渲染由CSS模型决定。

包含块
一个用于确定相关大小和定位的矩形区域。 值得注意的是,包含块 不是一个(它是一个矩形), 但通常由某个框的尺寸派生而来。 每个根据其包含块进行定位, 但并不局限于此包含块; 它可以溢出。 “一个框的包含块”这个短语意味着 “该框所在的包含块”, 而不是它生成的那个。

通常情况下,一个框的边缘 会作为其后代框的包含块; 我们说一个框“建立了”它的后代的包含块。 如果引用了包含块的属性, 那么它们引用的是生成该包含块的框的值。 (对于初始包含块, 除非另有说明,值取自根元素。)

详见[CSS2] 第9.1.2节第10.1节,以及 CSS 定位布局3 § 2.1 定位框的包含块的详细说明。

包含块链
一系列连续的包含块, 形成一个通过包含块关系的祖先-后代链。 例如,一个内联框的包含块是其最近的块容器祖先的内容框; 如果该块容器是一个流内, 那么它的包含块由其父级块容器形成; 如果该祖父级块容器绝对定位的, 那么它的包含块是其最近的定位祖先的内边缘(不一定是其父级), 依此类推,直到初始包含块
初始包含块
根元素的包含块。 初始包含块建立了一个块格式化上下文。 请参见CSS2.1第10.1节中关于连续媒体的内容; 以及[CSS-PAGE-3]中关于分页媒体的位置和尺寸。
格式化上下文
格式化上下文是相关框布局的环境。 不同的格式化上下文根据不同的规则布局它们的框。 例如,弹性布局上下文根据弹性布局规则来布局框[CSS-FLEXBOX-1], 而块格式化上下文根据块和内联布局规则进行布局[CSS2]。 此外,一些类型的格式化上下文可以交叉存在: 例如,一个内联格式化上下文存在于并与其建立的元素的块格式化上下文相互作用, 而一个ruby容器覆盖了一个ruby格式化上下文,与其参与的内联格式化上下文交互。

一个框要么建立一个新的独立格式化上下文,要么继续其包含块的格式化上下文。 在某些情况下,它可能还会建立一个新的(非独立的)共存格式化上下文。 除非另有说明,建立一个新的格式化上下文会创建一个独立格式化上下文。 框建立的格式化上下文类型取决于其内部显示类型。 例如,一个网格容器建立了一个新的网格格式化上下文, 一个ruby容器建立了一个新的ruby格式化上下文, 而一个块容器可以建立一个新的块格式化上下文和/或一个新的内联格式化上下文。 参见display属性。

独立格式化上下文
当一个框建立了一个独立的格式化上下文(无论该格式化上下文是否与其父级的类型相同),它本质上创建了一个新的、独立的布局环境: 除了通过框本身的大小外,其后代的布局通常不会受到外部格式化上下文规则和内容的影响,反之亦然。

例如,在一个块格式化上下文中,浮动框会影响周围框的布局。 但它们的效果不会逃逸出其格式化上下文: 建立其格式化上下文的框会扩展以完全包含它们, 而来自该框外部的浮动不会被允许伸入并影响框内的内容。

另一个例子是,边距不会跨格式化上下文边界折叠。

排除布局特性可以跨越独立格式化上下文边界影响内容。 (在撰写本文时,它们是唯一可以这样做的布局特性。)[CSS3-EXCLUSIONS]

某些属性可以强制一个框在通常不会的情况下建立一个独立的格式化上下文。 例如, 使一个框脱离正常流会导致它块化,并且建立一个独立的格式化上下文。 另一个例子是,某些contain属性值可以导致一个框建立一个独立的格式化上下文。 将一个块变成一个滚动容器将使其建立一个独立的格式化上下文; 但是将一个子网格变成一个滚动容器不会—它继续作为子网格, 其内容参与其父级网格容器的布局。

块框如果建立了一个独立的格式化上下文,则为其内容建立一个新的块格式化上下文。 在大多数其他情况下, 强制一个框建立一个独立的格式化上下文是无效的操作—要么框已经建立了一个独立格式化上下文(例如弹性容器), 要么无法在该类型的框上建立一个完全独立的新格式化上下文(例如非替换的内联框)。

块格式化上下文
内联格式化上下文
内联格式化上下文CSS 2.1 第9.4节中定义。内联格式化上下文 存在于(并且是其包含的)块格式化上下文中;例如,属于 内联格式化上下文 的行框与属于块格式化上下文的浮动元素相互作用。
块布局
块级框的布局, 在 块格式化上下文中执行。
块格式化上下文根
一个 块容器,它为其内容建立了一个新的块格式化上下文
BFC
块格式化上下文块格式化上下文根的缩写。它有多种非正式定义,通常指包含内部浮动、排除外部浮动并抑制边距折叠的框,因此可能具体指以下之一:
脱离正常流
在正常流中
如果一个框被从其预期位置和与周围内容的交互中提取出来,并使用不同的布局模式在其父格式化上下文的正常流之外进行布局,则该框为 脱离正常流。 这种情况发生在框被浮动(通过float)或绝对定位(通过absolute position)时。 一个框如果不 脱离正常流,则为 在正常流中

注意: 一些格式化上下文会抑制浮动,因此即使元素有float: left,它也不一定是脱离正常流

文档顺序
框或内容在文档中出现的顺序(可能与其渲染时的顺序不同)。为了确定伪元素的相对顺序,使用框树顺序,详见 CSS Pseudo-Elements 4 § 4 树遵守伪元素

详见 [CSS2] 第9章,其中有对这些术语的更完整定义。

附录B: display: contents 对非普通元素的影响

本节(目前)是非规范性的。

有些元素不仅仅通过CSS的框概念来呈现;例如,替换元素(如 img)、许多表单控件(如 input),以及SVG元素。

本附录定义了它们如何与 display: contents 进行交互。

HTML元素

br
wbr
meter
progress
canvas
embed
object
audio
iframe
img
video
frame
frameset
input
textarea
select

display: contents 计算为 display: none

legend

根据HTML, legend 使用 display: contents 不是 可渲染的legend, 因此它没有特殊的显示行为。 (因此,它会正常响应 display: contents。)

button
details
fieldset

这些元素没有任何特殊行为;display: contents 只是移除了它们的 主框, 它们的内容会正常渲染。

其他任何HTML元素

display: contents 下的表现和常规相同。

SVG 元素

具有 CSS 盒模型布局的 svg 元素 (包括父元素是 HTML 元素的 svg, 以及文档根元素)

display: contents 计算为 display: none

其他所有可渲染的SVG 容器元素
SVG 文本内容子元素
use

display: contents 会将该元素从格式化树中移除, 并将其内容提升到原元素的位置进行显示。 这些内容包括 use 元素的shadow-DOM内容。

其他任何SVG元素

display: contents 计算为 display: none

这里的意图是, 当元素内的“渲染上下文”与元素外的上下文不同步时, display: none 的行为适用。 如果元素的子元素在其父元素中不合法, 则不能简单地将它们提升到格式化树中。

例如,SVG中的文本内容和文本格式化元素 需要一个 text 元素上下文; 如果你移除了一个 text, 其子文本内容和元素将不再合法。 因此,display: contentstext 上会阻止整个文本元素被渲染。 相反,任何有效内容在 tspantextPath 中也是有效的父文本格式化上下文内容, 因此提升行为适用于这些元素。

同样,如果提升会将子元素从非渲染元素(例如在 patternsymbol)中的形状, 转换为渲染元素(例如直接作为子元素的形状 svg), 这将是一个无效的渲染上下文转换。 因此,从未渲染的容器元素不能通过 display: contents 被“去盒化”。

当一个元素从格式化树中移除时, 该元素上的任何控制布局和视觉格式化的SVG属性 在渲染内容时将被忽略。 然而,SVG 呈现属性——映射到CSS属性——继续影响值的处理和继承 [CSS-CASCADE-3]; 因此这些属性可以通过影响这些后代上的属性值, 来影响元素后代的布局和视觉格式化。

MathML 元素

对于所有 MathML 元素,display: contents 计算为 display: none

附录 C:规范作者的盒模型构造指南

本节是对规范作者的非规范性指导。

致谢

我们要感谢多年来试图理清盒模型生成细节的许多人, 特别是 Bert Bos, 虽然他最后的尝试使用 display-modeldisplay-role 未能成功, 但为我们当前的规范奠定了基础; Anton Prowse, 他对 CSS2.1 第 9 章的执着改进使混乱中产生了一些秩序; 以及 Oriol Brufau, 他揭示了本规范中的许多细微差别和错误。 也要向 David Baron、Mats Palmgren、Ilya Streltsyn 和 Boris Zbarsky 致以荣誉提及,感谢他们的反馈。

变更记录

自2020年候选推荐规范以来的更改

评论处理结果2020年5月19日候选推荐规范 发布以来已公布。

2020年5月19日候选推荐规范 以来的更改包括:

自2019年候选推荐规范以来的更改

2019年7月11日候选推荐规范 以来的更改包括:

2018年8月28日候选推荐规范 以来的更改包括:

候选推荐状态之前的更改

可以查看评论处理结果

2018年4月20日工作草案 以来的更改包括:

2017年7月20日工作草案 以来的更改包括:

2017年1月26日工作草案以来的更改包括:

还提供了意见处理结果

2015年10月15日工作草案以来的更改包括:

2015年7月21日工作草案 以来的更改包括:

2014年9月11日工作草案 以来的更改包括:

隐私注意事项

本规范未引入新的隐私注意事项。

安全注意事项

本规范未引入新的安全注意事项。

自我审查问卷

根据 安全和隐私:需考虑的问题的自我审查问卷

  1. 该规范是否涉及可识别个人身份的信息?

    否。

  2. 该规范是否涉及高价值数据?

    否。

  3. 该规范是否为某个源引入了跨浏览会话持久的状态?

    否。

  4. 该规范是否向网页暴露了持久的跨源状态?

    否。

  5. 该规范是否向当前无法访问的源暴露了任何其他数据?

    否。

  6. 该规范是否启用了新的脚本执行/加载机制?

    否。

  7. 该规范是否允许某个源访问用户的位置?

    否。

  8. 该规范是否允许某个源访问用户设备上的传感器?

    否。

  9. 该规范是否允许某个源访问用户本地计算环境的某些方面?

    否。

  10. 该规范是否允许某个源访问其他设备?

    否。

  11. 该规范是否允许某个源对用户代理的原生UI进行一定程度的控制?

    否。

  12. 该规范是否向网页暴露了临时标识符?

    否。

  13. 该规范是否区分了第一方和第三方上下文中的行为?

    否。

  14. 该规范在用户代理的“隐身”模式中应如何工作?

    没有不同。

  15. 该规范是否将数据持久化到用户的本地设备?

    否。

  16. 该规范是否包含“安全注意事项”和“隐私注意事项”部分?

    是。

  17. 该规范是否允许降级默认安全特性?

    否。

规范一致性

文档约定

一致性要求通过描述性断言和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语法和每个特性定义的个别语法。

渲染器符合本规范的要求,如果它在解释样式表时,除了解释适当的规范,还正确解析本规范中定义的所有特性并相应地渲染文档。 然而,UA由于设备限制而无法正确渲染文档,并不会使该UA不符合规范。(例如,UA不需要在单色显示器上渲染颜色。)

编辑工具符合本规范的要求,如果它编写的样式表在语法上符合通用CSS语法和本模块中每个特性的个别语法,并符合本模块描述的样式表的其他一致性要求。

部分实现

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

不稳定和专有功能的实现

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

非实验性实现

一旦规范达到候选推荐阶段,就可以进行非实验性实现,且实现者应发布未经前缀的实现,前提是他们能够证明该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也能以相同方式通过这些等效测试。等效测试必须公开以供同行评审。
实现
一个用户代理,符合以下条件:
  1. 实现了规范。
  2. 公开提供。该实现可以是正式发布的产品或其他公开提供的版本(例如,beta版本、预览版或“夜间构建”)。非正式发布的产品必须实现该功能至少一个月,以证明其稳定性。
  3. 非实验性版本(即不是专为通过测试套件设计的版本,且不打算继续用于正常使用)。

本规范将至少保留候选推荐状态六个月。

索引

本规范定义的术语

通过引用定义的术语

参考文献

规范性引用

[CSS-ALIGN-3]
Elika Etemad; Tab Atkins Jr.. CSS 盒子对齐模块 3 级。2023年2月17日。WD。URL: https://www.w3.org/TR/css-align-3/
[CSS-BACKGROUNDS-3]
Bert Bos; Elika Etemad; Brad Kemper。CSS 背景和边框模块 3 级。2023年2月14日。CR。URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-BOX-4]
Elika Etemad。CSS 盒模型模块 4 级。2022年11月3日。WD。URL: https://www.w3.org/TR/css-box-4/
[CSS-BREAK-3]
Rossen Atanassov; Elika Etemad。CSS 分段模块 3 级。2018年12月4日。CR。URL: https://www.w3.org/TR/css-break-3/
[CSS-BREAK-4]
Rossen Atanassov; Elika Etemad。CSS 分段模块 4 级。2018年12月18日。WD。URL: https://www.w3.org/TR/css-break-4/
[CSS-CASCADE-3]
Elika Etemad; Tab Atkins Jr.。CSS 层叠和继承 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 级。2022年1月13日。CR。URL: https://www.w3.org/TR/css-cascade-5/
[CSS-CONTAIN-2]
Tab Atkins Jr.; Florian Rivoal; Vladimir Levin。CSS 包含模块 2 级。2022年9月17日。WD。URL: https://www.w3.org/TR/css-contain-2/
[CSS-FLEXBOX-1]
Tab Atkins Jr.; 等人。CSS 弹性盒布局模块 1 级。2018年11月19日。CR。URL: https://www.w3.org/TR/css-flexbox-1/
[CSS-GRID-1]
Tab Atkins Jr.; 等人。CSS 网格布局模块 1 级。2020年12月18日。CR。URL: https://www.w3.org/TR/css-grid-1/
[CSS-GRID-2]
Tab Atkins Jr.; Elika Etemad; Rossen Atanassov。CSS 网格布局模块 2 级。2020年12月18日。CR。URL: https://www.w3.org/TR/css-grid-2/
[CSS-IMAGES-3]
Tab Atkins Jr.; Elika Etemad; Lea Verou。CSS 图像模块 3 级。2020年12月17日。CR。URL: https://www.w3.org/TR/css-images-3/
[CSS-INLINE-3]
Dave Cramer; Elika Etemad。CSS 内联布局模块 3 级。2022年11月14日。WD。URL: https://www.w3.org/TR/css-inline-3/
[CSS-OVERFLOW-3]
Elika Etemad; Florian Rivoal。CSS 溢出模块 3 级。2023年3月21日。WD。URL: https://www.w3.org/TR/css-overflow-3/
[CSS-PAGE-3]
Elika Etemad; Simon Sapin。CSS 分页媒体模块 3 级。2018年10月18日。WD。URL: https://www.w3.org/TR/css-page-3/
[CSS-POSITION-3]
Elika Etemad; Tab Atkins Jr.。CSS 定位布局模块 3 级。2023年2月17日。WD。URL: https://www.w3.org/TR/css-position-3/
[CSS-PSEUDO-4]
Daniel Glazman; Elika Etemad; Alan Stearns。CSS 伪元素模块 4 级。2022年12月30日。WD。URL: https://www.w3.org/TR/css-pseudo-4/
[CSS-RUBY-1]
Elika Etemad 等人。CSS Ruby 注释布局模块 1 级。2022年12月31日。WD。URL: https://www.w3.org/TR/css-ruby-1/
[CSS-SPEECH-1]
Léonie Watson; Elika Etemad。CSS 语音模块 1 级。2023年2月14日。CR。URL: https://www.w3.org/TR/css-speech-1/
[CSS-TABLES-3]
François Remy; Greg Whitworth; David Baron。CSS 表格模块 3 级。2019年7月27日。WD。URL: https://www.w3.org/TR/css-tables-3/
[CSS-TEXT-4]
Elika Etemad 等人。CSS 文本模块 4 级。2023年3月1日。WD。URL: https://www.w3.org/TR/css-text-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 级。2022年12月1日。CR。URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad。CSS 值与单位模块 4 级。2022年10月19日。WD。URL: https://www.w3.org/TR/css-values-4/
[CSS-WRITING-MODES-3]
Elika Etemad; Koji Ishii。CSS 书写模式 3 级。2019年12月10日。REC。URL: https://www.w3.org/TR/css-writing-modes-3/
[CSS2]
Bert Bos 等人。级联样式表 2 级修订版 (CSS 2.1) 规范。2011年6月7日。REC。URL: https://www.w3.org/TR/CSS21/
[CSS22]
Bert Bos。级联样式表 2 级修订版 2 (CSS 2.2) 规范。2016年4月12日。WD。URL: https://www.w3.org/TR/CSS22/
[CSSOM]
Daniel Glazman; Emilio Cobos Álvarez。CSS 对象模型 (CSSOM)。2021年8月26日。WD。URL: https://www.w3.org/TR/cssom-1/
[DOM]
Anne van Kesteren。DOM 标准。现行标准。URL: https://dom.spec.whatwg.org/
[HTML]
Anne van Kesteren 等人。HTML 标准。现行标准。URL: https://html.spec.whatwg.org/multipage/
[MEDIAQUERIES-5]
Dean Jackson 等人。媒体查询 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
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.。选择器 4 级。2022年11月11日。WD。URL: https://www.w3.org/TR/selectors-4/
[SVG2]
Amelia Bellamy-Royds 等人。可缩放矢量图形 (SVG) 2。2018年10月4日。CR。URL: https://www.w3.org/TR/SVG2/

参考信息

[CSS3-EXCLUSIONS]
Rossen Atanassov; Vincent Hardy; Alan Stearns。CSS 排除模块 第 1 级。2015年1月15日。WD。URL: https://www.w3.org/TR/css3-exclusions/

属性索引

名称 初始值 适用于 继承 百分比 动画类型 规范顺序 计算值 媒体
display [ <display-outside> || <display-inside> ] | <display-listitem> | <display-internal> | <display-box> | <display-legacy> inline 所有元素 不适用 不可动画 按语法 代表内部和外部 display 类型的关键词对,外加可选的 list-item 标志,或 <display-internal> 或 <display-box> 关键词;请参阅多种规范中的计算规则说明
order <integer> 0 弹性盒子项目和网格项目 不适用 按计算值类型 按语法 指定整数
visibility visible | hidden | collapse visible 所有元素 不适用 离散 按语法 按指定值 视觉