CSS 间隙装饰模块 第一级

W3C 首次公开工作草案

关于本文件的更多细节
此版本:
https://www.w3.org/TR/2025/WD-css-gaps-1-20250417/
最新发布版本:
https://www.w3.org/TR/css-gaps-1/
编辑草案:
https://drafts.csswg.org/css-gaps-1/
历史记录:
https://www.w3.org/standards/history/css-gaps-1/
反馈:
CSSWG 问题仓库
规范内留言
编辑:
Kevin Babbitt微软
为本规范建议修改:
GitHub 编辑器

摘要

本模块引入了若干属性,用于为如 grid 和 flex 等容器布局类型添加行间隙与列间隙的装饰。

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

本文件状态

本节描述了本文件在发布时的状态。 当前 W3C 发布的规范列表以及本技术报告的最新修订版 可在 W3C 标准与草案索引 https://www.w3.org/TR/ 查阅。

本文件由 CSS 工作组 作为首次公开工作草案,并采用 推荐流程 发布。 作为首次公开工作草案发布,并不代表 W3C 及其成员的认可。

本文件为草案,可能随时被更新、替换或废弃。 除非作为正在进行的工作,否则不应引用本文件。

请通过 在 GitHub 提交 issue(推荐), 并在标题中包含规范代码“css-gaps”,格式如下: “[css-gaps] …评论摘要…” 发送反馈。 所有问题和评论均会被 归档。 或者,也可以发送反馈到(归档)公共邮件列表 www-style@w3.org

本文件受 2023 年 11 月 3 日 W3C 流程文件 管辖。

本文件由依据 W3C 专利政策 运作的组织编写。 W3C 维护着关于本组交付物的 所有专利披露的公开列表; 该页面还包括专利披露的相关说明。 若个人确实知晓某项专利,并相信其包含必要专利权利要求, 则必须依据 W3C 专利政策第 6 节 披露相关信息。

1. 介绍

本节不具备规范性。

CSS Multicol 1 § 4 列间隙与分隔线 允许在 多栏容器 的列之间绘制分隔线。 本规范扩展了 column-rule-widthcolumn-rule-stylecolumn-rule-color 属性, 增加了行方向的等效属性,扩展了它们在其他容器布局中的应用,并提供了对间隙装饰绘制位置和方式的高级控制。

1.1. 值定义

本规范遵循 CSS 属性定义约定(见 [CSS2]), 并采用 值定义语法(见 [CSS-VALUES-3])。 本规范未定义的值类型,在 CSS Values & Units [CSS-VALUES-3] 中定义。 与其他 CSS 模块组合时,这些值类型的定义可能会被扩展。

除了定义中列出的属性特定值外, 本规范定义的所有属性也接受 CSS 全局关键字 作为属性值。 为了可读性,未在此处重复列出。

2. 间隙装饰

CSS 中的多种布局,如 多栏容器弹性容器网格容器砌体容器 都会将子盒子并排排列,并在它们之间留有间隙(也称为 gutter)。 每个这样的间隙可以包含一个 间隙装饰, 即在相邻盒子之间绘制的可见分隔符(如线条)。

.grid-with-spans {
  display: grid;
  grid-template: repeat(4, 100px) / repeat(4, 100px);
  gap: 20px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
}
带有跨行项目和间隙装饰的网格。
.flex {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  width: 500px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
}
带有间隙装饰的弹性盒布局。

2.1. 布局与绘制

本规范通常不定义容器布局中间隙的几何形状; 这部分内容由其他规范规定。 请参见 CSS Box Alignment 3 § 8 盒子间的间隙 以获取关于 多栏容器弹性容器网格容器 的相关定义。

间隙装饰 不会占用空间。 也就是说,间隙装饰 的出现或宽度不会影响其他内容的排布。 如果某个 间隙装饰 的宽度大于其间隙, 任何相邻盒子都会与该装饰重叠, 在某些情况下装饰甚至可能超出容器盒子的范围。间隙装饰 会绘制在容器边框之上。 对于可滚动容器, 注意虽然容器的边框和背景不会随着内容滚动, 但装饰需要随着容器内的项目一起滚动。

在下列每种位置定义了一个 间隙交点

以下示例说明了 间隙交点 的位置, 在每个示例中用洋红色 + 标记。

.grid {
  display: grid;
  grid-template: repeat(4, 100px) / repeat(4, 100px);
  gap: 20px;
  background: rgb(255 255 128);
}
.grid > * {
  border: 1px dashed black;
}
带跨行项目的网格中的 间隙交点 位置。 注意即使跨行项目触及容器边缘,或者交点两侧都有跨行项目(如 #2 和 #6,或 #4 和 #7 之间), 也会存在 间隙交点
.flex {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  width: 500px;
  background: rgb(255 255 128);
}
.flex > * {
  border: 1px dashed black;
}
弹性盒布局中的 间隙交点 位置。 注意在容器边缘也会出现 间隙交点, 并且当相邻行的项目未完全对齐时(如 #2、#3、#4 与 #5 之间)会有两个 间隙交点 彼此靠得很近。

注意: CSS Box Alignment 3 § 8.1 行与列间隙:row-gap 与 column-gap 属性 定义了 弹性容器中交叉方向的间隙是指同一行中相邻弹性项目之间的间隙。 因此,在上面的例子中, 即使 #4 和 #7 的右边缘对齐, #5 和 #8 的左边缘对齐, 这两对项目之间的空间也是两个独立的间隙,因为它们位于不同的行。 所以 #4、#5、#7 和 #8 之间的交点 包含两个位置重合的 间隙交点: 一个在 #4 和 #5 之间间隙的底部, 一个在 #7 和 #8 之间间隙的顶部。

间隙装饰 是依据一对 间隙交点 绘制的, 位于相应间隙的中心并与其边缘平行。

2.2. 将间隙装饰分割为多个线段:column-rule-breakrow-rule-breakrule-break 属性

名称: column-rule-breakrow-rule-break
值: none | spanning-item | intersection
初始值: spanning-item
适用于: 网格容器弹性容器多栏容器砌体容器
是否继承:
百分比: 不适用
计算值: 按指定
规范顺序: 按语法
动画类型: 离散

设置在可见的“T”或“十字”交点处,如何将某一间隙内的装饰分割为多个线段。 如何具体应用这些值的详细说明请参见确定间隙装饰端点对的步骤。

none
间隙装饰不会在可见的“T”或“十字”交点处开始或结束。 而是从间隙一端到另一端绘制一条连续的装饰线。
spanning-item
间隙装饰会在可见的“T”交点处开始和结束,但会贯穿可见的“十字”交点。
intersection
间隙装饰会在可见的“T”交点和“十字”交点处开始和结束。

对这些值进行命名优化。

名称: rule-break
值: <'column-rule-break'>
初始值: 见各自属性
适用于: column-rule-breakrow-rule-break
是否继承: 见各自属性
百分比: 见各自属性
计算值: 见各自属性
动画类型: 见各自属性
规范顺序: 按语法

column-rule-breakrow-rule-break 属性设置为相同的值。

2.2.1. 将间隙交点配对为线段

在给定 gap 的上下文中, 一对 间隙交点 ab 被认为是 不连续 的, 如果从 ab 的线段(宽度与 gap 相同)与容器中的子项相交。

注意: 此定义的主要用例是避免间隙装饰在作者不希望的情况下与跨越项相交, 例如当跨越项触及容器边缘时, 或当跨越项形成“T交点”时。 但该定义的具体表述 也旨在处理如下情况:

标记的四个间隙交点位于同一条间隙中线。 但因第3项比第1和第5项稍宽, 从上往下数第二和第三个交点是不连续的。 因此,上面两个间隙交点成一对, 下面两个间隙交点成一对。 (还有另外一对间隙交点, 稍微偏右,未被标记, 这些点将组成另一对。)

确定间隙装饰端点对 在给定 gap 内:
  1. pairs 为空列表。 令 endpoints 为落在 gap 中线上的间隙交点列表, 按照 gap 轴线的起点到终点排序。 令 breakcolumn-rule-breakrow-rule-break 的使用值, 以适用于 gap 为准。
  2. 如果 endpoints 少于2项,则返回 pairs
  3. 如果 break 不为 none, 且 endpoints 前两项为不连续, 则删除 endpoints 的第一项,然后返回第2步。
  4. endpoints 移除第一项。 令 start 等于该项。
  5. endpoints 移除第一项。 令 end 等于该项。
  6. 如果 endpoints 非空,且下列任一条件为真...
    1. breaknone
    2. breakspanning-item, 且 startendpoints 的第一项不是不连续的。
    3. breakintersection, 且 startendpoints 的第一项不是不连续的, 并且该交点两侧都有跨越项。
    ...则返回第5步。
  7. startgap计算偏移量。 按 gap 轴线正方向偏移 start
  8. endgap计算偏移量。 按 gap 轴线反方向偏移 end
  9. pairs 添加由 startend 组成的元组。
  10. 返回第2步。

每对通过上述步骤确定的端点之间都会绘制一个间隙装饰

以下示例展示了 *-rule-break 属性的不同设置。 为便于比较差异,*-rule-outset 属性都设置为 0

.break-none-grid {
  display: grid;
  grid-template: repeat(4, 100px) / repeat(4, 100px);
  gap: 20px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
  rule-break: none;
  rule-outset: 0px;
}
不分割的 Grid 间隙装饰。 注意 间隙装饰 会延伸到网格中项目的“后面”。
.break-spanning-item-grid {
  display: grid;
  grid-template: repeat(4, 100px) / repeat(4, 100px);
  gap: 20px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
  rule-break: spanning-item;
  rule-outset: 0px;
}
在不邻接跨越项的间隙交点处分割的 Grid 间隙装饰
.break-intersection-grid {
  display: grid;
  grid-template: repeat(4, 100px) / repeat(4, 100px);
  gap: 20px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
  rule-break: intersection;
  rule-outset: 0px;
}
在每个未被跨越项包夹的间隙交点处分割的 Grid 间隙装饰
.break-none-flex {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
  rule-break: none;
  rule-outset: 0px;
}
不分割的 Flexbox 间隙装饰。 注意每条弹性行有自己独立的间隙, 因此即便间隙对齐,相邻行的间隙装饰也是彼此独立的。

注意: 由于 flexbox 没有跨越项的概念, spanning-item 在 flexbox 上的效果与 none 相同。

.break-intersection-flex {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  width: 500px;
  gap: 20px;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
  rule-break: intersection;
  rule-outset: 0px;
}
在每个间隙交点处分割的 Flexbox 间隙装饰

2.3. 调整间隙装饰端点:column-rule-outsetrow-rule-outsetrule-outset 属性

名称: column-rule-outsetrow-rule-outset
值: <length-percentage>
初始值: 50%
适用于: 网格容器弹性容器多栏容器砌体容器
是否继承:
百分比: 参考交叉间隙宽度
计算值: 按指定
规范顺序: 按语法
动画类型: 按计算值类型

这些属性可用于相对于通常由间隙交点确定的端点,偏移间隙装饰的端点。 50% 的初始值会将间隙装饰端点放在交点中心。 取值为 0 时,间隙装饰端点会与交点边缘重合。 正值向交点中心延伸; 负值则远离交点中心。 这些偏移同样适用于容器边缘, 此时正值可能会超出容器内容区。

名称: rule-outset
值: <'column-rule-outset'>
初始值: 见各自属性
适用于: column-rule-outsetrow-rule-outset
是否继承: 见各自属性
百分比: 见各自属性
计算值: 见各自属性
动画类型: 见各自属性
规范顺序: 按语法

column-rule-outsetrow-rule-outset属性设置为相同的值。

.outset-0px {
  column-rule-outset: 0px;
  column-rule-break: intersection;
}
0px 的 outset 使间隙装饰的端点与相邻项目对齐。
.outset-5px {
  column-rule-outset: 5px;
  column-rule-break: intersection;
}
5px 的 outset 使间隙装饰端点略微超出相邻项目边缘。
.outset-50percent {
  column-rule-outset: 50%;
  column-rule-break: intersection;
}
50% 的 outset(初始值)会让每个间隙装饰的两端延伸到交点的一半处。 相邻间隙装饰在中点“汇合”,形成一条连续的线。 注意在容器边缘处,交叉间隙宽度被定义为0, 所以 50% 的 outset 解析为 0,因此间隙装饰不会超出容器边界。 (可与上例中指定像素单位的 outset 进行对比。)
.outset-negative-5px {
  column-rule-outset: -5px;
  column-rule-break: intersection;
}
-5px 的 outset 会让间隙装饰的端点相对于相邻项目边缘变短。

在考虑给定间隙内的间隙交点时, 每个交点都被分配一个交叉间隙宽度,定义如下:

容器内容边缘处
交叉间隙宽度0
与其他间隙的交点处
交叉间隙宽度column-gaprow-gap属性的使用值, 以适用于交叉间隙为准。
计算偏移量,针对给定间隙 gap 内的间隙交点 point
  1. widthpoint交叉间隙宽度
  2. outsetcolumn-rule-outsetrow-rule-outset 的计算值, 以适用于 gap 为准。 以 width 解析 outset 中的百分比。
  3. resultwidth 乘以 50%。 从 result 中减去 outset
  4. 返回 result

关于如何应用偏移量的详细信息, 请参见确定间隙装饰端点对的步骤。

2.4. 间隙装饰绘制顺序:rule-paint-order 属性

名称: rule-paint-order
值: row-over-column | column-over-row
初始值: row-over-column
适用于: 网格容器弹性容器,以及 砌体容器
是否继承:
百分比: 不适用
计算值: 按指定
规范顺序: 按语法
动画类型: 离散

设置二维容器中间隙装饰的绘制顺序。

以下示例展示了使用rule-paint-order属性调整间隙装饰绘制顺序的效果。

.row-over-coulumn {
  rule-paint-order: row-over-column;
  row-rule: 6px solid red;
  column-rule: 6px solid blue;
}
行优先于列的间隙装饰绘制顺序。
rule-paint-order: column-over-row;
row-rule: 6px solid red;
column-rule: 6px solid blue;
列优先于行的间隙装饰绘制顺序。

3. 颜色、样式与宽度

本节中的属性定义将覆盖[CSS-MULTICOL-1]中同名属性的定义。

3.1. 间隙装饰颜色:column-rule-colorrow-rule-color 属性

名称: column-rule-colorrow-rule-color
值: <line-color-list> | <auto-line-color-list>
初始值: currentcolor
适用于: 网格容器弹性容器多栏容器砌体容器
是否继承:
百分比: 不适用
计算值: 按指定
规范顺序: 按语法
动画类型: 按计算值类型
<line-color-list>          = [ <line-color-or-repeat> ]+

<auto-line-color-list>     = [ <line-color-or-repeat> ]*
                             <auto-repeat-line-color>
                             [ <line-color-or-repeat> ]*

<line-color-or-repeat>     = [ <color> | <repeat-line-color> ]

<repeat-line-color>        = repeat( [ <integer [1,∞]> ] , [ <color> ]+ )

<auto-repeat-line-color>   = repeat( auto , [ <color> ]+ )
<color>
设置间隙装饰的颜色。

3.2. 间隙装饰样式:column-rule-stylerow-rule-style 属性

名称: column-rule-stylerow-rule-style
值: <line-style-list> | <auto-line-style-list>
初始值: none
适用于: 网格容器弹性容器多栏容器砌体容器
是否继承:
百分比: 不适用
计算值: 按指定
规范顺序: 按语法
动画类型: 离散
<line-style-list>          = [ <line-style-or-repeat> ]+

<auto-line-style-list>     = [ <line-style-or-repeat> ]*
                             <auto-repeat-line-style>
                             [ <line-style-or-repeat> ]*

<line-style-or-repeat>     = [ <line-style> | <repeat-line-style> ]

<repeat-line-style>        = repeat( [ <integer [1,∞]> ] , [ <line-style> ]+ )

<auto-repeat-line-style>   = repeat( auto , [ <line-style> ]+ )

这些属性用于设置间隙装饰的样式。 <line-style> 的取值按折叠边框模型解释。

3.3. 间隙装饰宽度:column-rule-widthrow-rule-width 属性

名称: column-rule-widthrow-rule-width
值: <line-width-list> | <auto-line-width-list>
初始值: medium
适用于: 网格容器弹性容器多栏容器,以及砌体容器
是否继承:
百分比: 不适用
计算值: 绝对长度列表,按边框宽度对齐,或在下述条件下为 0
规范顺序: 按语法
动画类型: 按计算值类型
<line-width-list>          = [ <line-width-or-repeat> ]+

<auto-line-width-list>     = [ <line-width-or-repeat> ]*
                             <auto-repeat-line-width>
                             [ <line-width-or-repeat> ]*

<line-width-or-repeat>     = [ <line-width> | <repeat-line-width> ]

<repeat-line-width>        = repeat( [ <integer [1,∞]> ] , [ <line-width> ]+ )

<auto-repeat-line-width>   = repeat( auto , [ <line-width> ]+ )

该属性用于设置间隙装饰的宽度。不允许负值。

如果 column-rule-style 的计算值为 nonehidden, 那么 column-rule-width 的计算值为 0。 此行为是为了与CSS Multicol 1 § 4.4 列规则宽度:column-rule-width 属性 向后兼容。

当涉及值列表时,是否应适用“强制为0”行为? 如果适用,未对齐的列表应如何处理?

3.4. 值列表与 repeat() 语法

本节中的每个属性都接受以空格分隔的值列表。 以这种方式设置多个值可以让一个容器内的间隙装饰各不相同。

作者可能会这样指定红蓝交替的列分隔线:
column-rule-width: 1px;
column-rule-style: solid;
column-rule-color: red blue;

这样的列表可以包含 repeat() 语法。 类似于 CSS Grid Layout 1 § 7.2.3 重复行和列:repeat() 语法,这种语法允许以更简洁的方式书写具有重复模式的间隙装饰系列。

repeat() 语法的大致通用形式如下:

repeat( [ <integer [1,∞]> | auto ] , <value>+ )

repeat() 的第一个参数指定重复次数。

<integer>
表示整数重复器整数重复器 会将第二个参数中的值列表,按照第一个参数指定的次数重复展开。
作者可以写:
column-rule-color: gray red blue red blue red blue gray;

或者简化为如下,效果相同:

column-rule-color: gray repeat(3, red blue) gray;
auto
表示自动重复器自动重复器用于为那些未被列表其他部分赋值的间隙补齐值。 一个值列表中最多只能有一个repeat()自动重复器
延续前例,若作者无法确定最终有多少列,可写:
column-rule-color: gray repeat(auto, red blue) gray;

这将在第一个和最后一个列间隙设置灰色装饰, 中间列间隙交替为红色和蓝色。

repeat() 的第二个参数是以空格分隔的值列表, 这些值可被 repeat() 出现的属性接受。

要使用 values 列表为 gaps 列表赋值间隙装饰
  1. values 中的所有整数重复器 替换为其展开形式。
  2. 如果列表中没有自动重复器,则:
    1. valuesgaps 的第一个项目开始,逐一对应赋值。 若值数量少于间隙数量,则从头循环取值,直到全部间隙被赋值。
    2. 结束此算法。
  3. values 包含自动重复器。 令 leading countvalues 中自动重复器前的项目数。 令 trailing count 为自动重复器后的项目数。
  4. gaps 划分如下:
    1. leading gaps 包含 gaps 的前 leading count 项。
    2. trailing gaps 包含 gaps 的后 trailing count 项, 不包括已在 leading gaps 的项目。
    3. auto gaps 包含 gaps 中未在 leading gapstrailing gaps 中的项目。
  5. leading gaps 非空,使用 values 的前 leading count赋值间隙装饰leading gaps
  6. trailing gaps 非空,使用 values 的最后 trailing count反向赋值间隙装饰trailing gaps
  7. auto gaps 非空,使用repeat()第二参数中的值赋值间隙装饰auto gaps
反向赋值间隙装饰gaps 列表,使用 values 列表, 步骤同赋值间隙装饰, 但第2步所有“第一个”都替换为“最后一个”。

3.5. 间隙装饰简写:column-rulerow-rule 属性

名称: column-rulerow-rule
值: <gap-rule-list> | <gap-auto-rule-list>
初始值: 见各自属性
适用于: 见各自属性
是否继承: 见各自属性
百分比: 见各自属性
计算值: 见各自属性
动画类型: 见各自属性
规范顺序: 按语法
<gap-rule-list>        = <gap-rule-or-repeat>#

<gap-auto-rule-list>   = <gap-rule-or-repeat>#? ,
                         <gap-auto-repeat-rule> ,
                         <gap-rule-or-repeat>#?

<gap-rule-or-repeat>   = <gap-rule> | <gap-repeat-rule>

<gap-repeat-rule>      = repeat( <integer [1,∞]> , <gap-rule># )

<gap-auto-repeat-rule> = repeat( auto , <gap-rule># )

<gap-rule>             = <line-width> || <line-style> || <color>

这些简写属性会同时设置对应的宽度、样式和颜色属性。

3.6. 双向间隙装饰简写:rule-colorrule-stylerule-widthrule 属性

名称: rule-color
值: <'column-rule-color'>
初始值: 见各自属性
适用于: column-rule-colorrow-rule-color
是否继承:
百分比: 见各自属性
计算值: 见各自属性
动画类型: 见各自属性
规范顺序: 按语法
名称: rule-style
值: <'column-rule-style'>
初始值: 见各自属性
适用于: column-rule-stylerow-rule-style
是否继承:
百分比: 见各自属性
计算值: 见各自属性
动画类型: 见各自属性
规范顺序: 按语法
名称: rule-width
值: <'column-rule-width'>
初始值: 见各自属性
适用于: column-rule-widthrow-rule-width
是否继承:
百分比: 见各自属性
计算值: 见各自属性
动画类型: 见各自属性
规范顺序: 按语法
名称: rule
值: <'column-rule'>
初始值: 见各自属性
适用于: column-rulerow-rule
是否继承:
百分比: 见各自属性
计算值: 见各自属性
动画类型: 见各自属性
规范顺序: 按语法

这些简写属性会将对应的列和行属性设置为相同的值。

隐私注意事项

目前本规范没有新增的隐私注意事项报告。

安全注意事项

目前本规范没有新增的安全注意事项报告。

一致性

文档约定

一致性要求通过描述性断言和 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"> 区分,例如: UA 必须提供可访问性替代方案。

一致性类别

本规范定义了三类一致性对象:

样式表
CSS 样式表
渲染器
解释样式表语义并渲染使用它们的文档的 UA
创作工具
编写样式表的 UA

如果样式表中所有使用本模块定义语法的声明均符合通用 CSS 语法及本模块每个特性的各自语法,则该样式表符合本规范。

如果渲染器除按相关规范解释样式表外,还能正确解析本规范定义的所有特性并据此渲染文档,则该渲染器符合本规范。不过,由于设备限制 UA 无法正确渲染文档并不构成不一致性。(例如,UA 不要求在黑白显示器上渲染颜色。)

创作工具若编写的样式表在语法上符合通用 CSS 语法和本模块每个特性的各自语法,并满足本模块描述的样式表一致性要求,则视为符合本规范。

部分实现

为便于作者利用前向兼容的解析规则指定备用值,CSS 渲染器必须将不支持的 at-规则、属性、属性值、关键字及其他语法结构视为无效(并 按需忽略)。特别是,UA 不得在单个多值属性声明中有选择性地忽略不支持的分量值但保留支持的值:如果有任何值被视为无效(即不支持的值必须如此),CSS 要求整个声明被忽略。

不稳定和专有特性的实现

为避免与未来稳定的 CSS 特性冲突,CSSWG 建议遵循最佳实践来实现 不稳定特性和 专有扩展

非实验性实现

一旦某项规范进入候选推荐(Candidate Recommendation)阶段,即可进行非实验性实现,实现者应发布未加前缀的实现,前提是他们能证明该 CR 级别特性已按规范正确实现。

为了建立和维护 CSS 在不同实现间的互操作性,CSS 工作组要求非实验性的 CSS 渲染器在发布任何未加前缀的 CSS 特性实现前,向 W3C 提交实现报告(如有必要,还需提交用于该报告的测试用例)。提交给 W3C 的测试用例将由 CSS 工作组审核和修正。

有关提交测试用例和实现报告的更多信息可在 CSS 工作组网站 https://www.w3.org/Style/CSS/Test/ 查阅。 如有疑问请发邮件至 public-css-testsuite@w3.org 邮件列表。

索引

本规范定义的术语

引用定义的术语

参考文献

规范性引用

[CSS-ALIGN-3]
Elika Etemad;Tab Atkins Jr.. CSS 盒对齐模块第3级。2025年3月11日。WD。URL: https://www.w3.org/TR/css-align-3/
[CSS-BACKGROUNDS-3]
Elika Etemad;Brad Kemper. CSS 背景与边框模块第3级。2024年3月11日。CRD。URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-COLOR-5]
Chris Lilley 等。CSS 颜色模块第5级。2025年3月18日。WD。URL: https://www.w3.org/TR/css-color-5/
[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级。2025年3月26日。CRD。URL: https://www.w3.org/TR/css-grid-1/
[CSS-GRID-2]
Tab Atkins Jr. 等。CSS 网格布局模块第2级。2025年3月26日。CRD。URL: https://www.w3.org/TR/css-grid-2/
[CSS-GRID-3]
Tab Atkins Jr. 等。CSS 网格布局模块第3级。2025年2月7日。WD。URL: https://www.w3.org/TR/css-grid-3/
[CSS-MULTICOL-1]
Florian Rivoal;Rachel Andrew. CSS 多栏布局模块第1级。2024年5月16日。CR。URL: https://www.w3.org/TR/css-multicol-1/
[CSS-MULTICOL-2]
Florian Rivoal;Rachel Andrew. CSS 多栏布局模块第2级。2024年12月19日。FPWD。URL: https://www.w3.org/TR/css-multicol-2/
[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 等。层叠样式表2.1级规范。2011年6月7日。REC。URL: https://www.w3.org/TR/CSS2/
[RFC2119]
S. Bradner. RFC中用于指示需求级别的关键词。1997年3月。最佳当前实践。URL: https://datatracker.ietf.org/doc/html/rfc2119

属性索引

名称 初始值 适用对象 继承 百分比 动画类型 规范顺序 计算值
column-rule <gap-rule-list> | <gap-auto-rule-list> 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法 见各自属性
column-rule-break none | spanning-item | intersection spanning-item 网格容器、弹性容器、多栏容器和砌体容器 不适用 离散 按语法 按指定
column-rule-color <line-color-list> | <auto-line-color-list> currentcolor 网格容器、弹性容器、多栏容器和砌体容器 不适用 按计算值类型 按语法 按指定
column-rule-outset <length-percentage> 50% 网格容器、弹性容器、多栏容器和砌体容器 参考交叉间隙宽度 按计算值类型 按语法 按指定
column-rule-style <line-style-list> | <auto-line-style-list> none 网格容器、弹性容器、多栏容器和砌体容器 不适用 离散 按语法 按指定
column-rule-width <line-width-list> | <auto-line-width-list> medium 网格容器、弹性容器、多栏容器和砌体容器 不适用 按计算值类型 按语法 绝对长度列表,按边框宽度对齐,或在下述条件下为0
row-rule <gap-rule-list> | <gap-auto-rule-list> 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法 见各自属性
row-rule-break none | spanning-item | intersection spanning-item 网格容器、弹性容器、多栏容器和砌体容器 不适用 离散 按语法 按指定
row-rule-color <line-color-list> | <auto-line-color-list> currentcolor 网格容器、弹性容器、多栏容器和砌体容器 不适用 按计算值类型 按语法 按指定
row-rule-outset <length-percentage> 50% 网格容器、弹性容器、多栏容器和砌体容器 参考交叉间隙宽度 按计算值类型 按语法 按指定
row-rule-style <line-style-list> | <auto-line-style-list> none 网格容器、弹性容器、多栏容器和砌体容器 不适用 离散 按语法 按指定
row-rule-width <line-width-list> | <auto-line-width-list> medium 网格容器、弹性容器、多栏容器和砌体容器 不适用 按计算值类型 按语法 绝对长度列表,按边框宽度对齐,或在下述条件下为0
rule <'column-rule'> 见各自属性 同 column-rule 和 row-rule 见各自属性 见各自属性 按语法 见各自属性
rule-break <'column-rule-break'> 见各自属性 同 column-rule-break 和 row-rule-break 见各自属性 见各自属性 见各自属性 按语法 见各自属性
rule-color <'column-rule-color'> 见各自属性 同 column-rule-color 和 row-rule-color 见各自属性 见各自属性 按语法 见各自属性
rule-outset <'column-rule-outset'> 见各自属性 同 column-rule-outset 和 row-rule-outset 见各自属性 见各自属性 见各自属性 按语法 见各自属性
rule-paint-order row-over-column | column-over-row row-over-column 网格容器、弹性容器和砌体容器 不适用 离散 按语法 按指定
rule-style <'column-rule-style'> 见各自属性 同 column-rule-style 和 row-rule-style 见各自属性 见各自属性 按语法 见各自属性
rule-width <'column-rule-width'> 见各自属性 同 column-rule-width 和 row-rule-width 见各自属性 见各自属性 按语法 见各自属性

问题索引

对这些值进行命名优化。
当涉及值列表时,是否应适用“强制为0”行为?如适用,未对齐列表应如何处理?