CSS 逻辑属性与值 第一版

W3C 工作草案,

此版本:
https://www.w3.org/TR/2018/WD-css-logical-1-20180827/
最新发布版本:
https://www.w3.org/TR/css-logical-1/
编辑草案:
https://drafts.csswg.org/css-logical-1/
之前版本:
问题跟踪:
内嵌于规范
GitHub 问题
编辑:
(微软)
Elika J. Etemad / fantasai (受邀专家)
建议编辑此规范:
GitHub 编辑器

摘要

该模块介绍了逻辑属性与值,使作者能够通过逻辑而非物理的方向和尺寸映射来控制布局。该模块为 [CSS21] 中定义的功能定义了逻辑属性与值。这些属性是对应物理属性的书写模式相对等价物。

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

此文档的状态

本节描述了本文档在发布时的状态。其他文档可能会取代此文档。当前 W3C 发布的文档列表以及本技术报告的最新修订版可以在 W3C 技术报告索引 https://www.w3.org/TR/。

作为工作草案发布并不意味着 W3C 会员的认可。这是草稿文档,可能随时更新、替换或被其他文档取代。引用此文档为工作进展时应谨慎。

GitHub 问题 是讨论此规范的首选方式。提交问题时,请在标题中包含“css-logical”字样,最好像这样: “[css-logical] …评论摘要…”。 所有问题和评论都被 归档,并且也有 历史归档

本文件由 CSS 工作组(隶属于 样式活动)制作。

本文件由根据 W3C 专利政策 运作的团队制作。W3C 维护了一份与该小组交付物相关的 公开专利披露列表;该页面还包括专利披露的说明。任何知晓包含 核心声明 的专利的人士必须根据 W3C 专利政策第 6 节 披露相关信息。

本文件遵循 2018年2月1日 W3C 流程文档

1. 引言

注意:请参阅 [css-writing-modes-4] 了解书写模式的正式介绍;本模块假设熟悉其术语。

由于不同的书写系统有不同的书写方向, 存在多种 书写模式: 从左到右,自上而下; 从右到左,自上而下; 自下而上,从右到左; 等等。 诸如页面“起始”或行“起始”等逻辑概念 在物理概念如行的“顶部”或段落的“左边缘”之间有不同的映射。 布局的一些方面实际上是相对于书写方向的, 因此在将页面翻译为不同的系统时会有所变化; 其他方面则固有地相对于页面的物理方向。

例如, 在英语中,列表、标题和段落通常是左对齐的; 但实际上它们是起始对齐的,因为在阿拉伯语中,这些结构是右对齐的, 多语言文档需要相应地支持两种书写系统。

以下代码展示了如何使用逻辑语法编写适用于不同书写系统的代码:

在兼容浏览器中的代码渲染
<blockquote dir="auto">Quotation in English</blockquote>
<blockquote dir="auto">اقتباس في العربية</blockquote>
blockquote {
    text-align: start; /* 拉丁文左对齐,阿拉伯文右对齐 */
    margin-inline-start: 0px; /* 拉丁文左边距,阿拉伯文右边距 */
    border-inline-start: 5px solid gray; /* 拉丁文左边框,阿拉伯文右边框 */
    padding-inline-start: 5px; /* 拉丁文左内边距,阿拉伯文右内边距 */
}

文档可能同时需要逻辑和物理属性。例如, 页面上按钮的阴影必须保持一致, 因此其偏移将基于视觉考虑和物理方向来选择, 而不会因书写系统的不同而变化。

由于CSS最初设计时仅考虑了物理坐标, 本模块引入了与文本流相关的等效概念, 使得CSS样式表中的声明可以用相对流方向术语表示。 它定义了等效属性的映射和层叠规则, 以及一些等同于CSS2.1的新属性和值, 并描述了其语法的派生原则。 预计未来的CSS规范将在其属性和值定义中同时包含两组坐标, 因此本模块不会跟踪较新CSS特性中相对流方向变体的引入。

CSS书写模式抽象框术语部分 定义了流相对术语和物理术语之间的映射。 这种映射取决于使用值书写模式方向, 它控制流相对关键字和属性的解释。

典型英语文本布局中的物理术语和流相对术语的对应关系
典型中文文本布局中的物理术语和流相对术语的对应关系

注意:由于它与文字方向: 正直的交互作用, 使用的 方向 依赖于 计算值 书写模式文字方向的计算值。

不稳定的事项由于部分模块的实现实际上是 为了在Web上实现 CSS书写模式的必需 (为了正确实现HTML的默认样式), CSSWG决定 §2 相对流方向的值:block-start, block-end, inline-start, inline-end§4 相对流方向的盒模型属性 中的相关功能批准上线。 (参阅 FPWD公告了解更多背景信息。)

但是,还有一些重大的未决问题:

欢迎对这些问题提出评论、建议和用例。 请在GitHub上提交,或将其发送至www-style@w3.org。

2. 相对流方向的值: block-start, block-end, inline-start, inline-end

接受物理方向关键字值的属性 (top, bottom, leftright) 被重新定义 以接受适当的 相对流方向 的关键字。 在这种情况下, 可以使用相对流方向的值替代相应的物理值。 对于接受多个关键字的属性, 不允许组合相对流方向和物理值 (除非未来规范中另有规定)。

属性可以是1维或2维的。 当上下文限制为一个维度时, 相对流方向的关键字将被缩写。

2.1. caption-side 属性的逻辑值

名称: caption-side
新增值: inline-start | inline-end
计算值: 按指定

这些值仅添加到支持 leftright 值的 caption-side 实现中。 leftright 值本身 被定义为 行相对

现有的 topbottom 值被重新定义为 分别分配给表格的 block-startblock-end 两侧。

此属性的映射使用了标题的 书写模式 及其 包含块 (即 表格包装框)。

2.2. floatclear 属性的相对流方向值

名称: float, clear
新增值: inline-start | inline-end
计算值: 按指定

这些属性的映射使用了元素的 书写模式 及其 包含块

注意:这些属性在CSS2中是1维的, 但计划扩展为二维, 因此使用了未缩写的 相对流方向 关键字。

2.3. text-align 属性的相对流方向值

名称: text-align
新增值: start | end
计算值: 按指定

这些值在 [css-text-3] 中有规范定义。

2.4. resize 属性的相对流方向值

名称: resize
新增值: block | inline
计算值: 按指定

3. 相对流方向的页面分类

在CSS中,所有页面都由用户代理分类为左页面或右页面。[CSS21] 然而,页面的起始顺序取决于页面的前进方向是从左到右还是从右到左。

为了允许控制页面在横跨页面时的分页, 而不是控制页面的左侧或右侧, 本模块为 page-break-afterpage-break-before 属性引入了以下附加关键字 [CSS21]

recto
相当于从左到右页面进程中的 right, 而在从右到左页面进程中相当于 left
verso
相当于从左到右页面进程中的 left, 而在从右到左页面进程中相当于 right

这些值按指定计算 并在 [css-break-3] 中进一步定义。

尽管作者通常使用物理定位放置页码, 页眉的内容通常依赖于哪一页在跨页中较早。 因此,以下相对流方向的页面选择器 也被添加以支持相对流方向的页面选择:

:recto
相当于从左到右页面进程中的 ':right', 而在从右到左页面进程中相当于 ':left'。
:verso
相当于从左到右页面进程中的 ':left', 而在从右到左页面进程中相当于 ':right'。

相对流方向的页面选择器与 ':left' 和 ':right' 页面选择器具有相同的优先级。

4. 相对流方向的盒模型属性

本规范引入了与 相对流方向 等效的新的CSS属性 以及 物理盒模型属性。 每组相关的相对流方向的长属性 及其相应的物理属性 组成了一个 逻辑属性组。 例如,padding-* 属性 组成了一个单一的 逻辑属性组margin-* 属性 组成了另一个单独的 逻辑属性组, 等等。 定向或轴的映射类型 (相对流方向物理) 被称为该属性的 映射逻辑

注意: 每个长属性最多属于一个 逻辑属性组

相对流方向属性的 指定值 与对应的物理属性的指定值不同, 但相对流方向属性和物理属性共享计算值。 哪些属性对共享计算值 取决于元素的 书写模式方向文字方向 的计算值。

注意: 每个元素自身的 书写模式 用于将每个 相对流方向 属性映射到其 物理 等效属性 简化了层叠计算 并为作者提供了一个易于理解的模型。 但是,在许多情况下,这可能会出现问题, 例如,参见 此讨论。 作者可能需要使用嵌套元素 以获取在从父元素更改元素的 书写模式 时正确的映射行为。

具有相对流方向和物理属性输入的计算值 是通过对两者的声明应用CSS层叠来确定的。 优先级并不取决于声明是相对流方向还是物理属性, 而是由CSS层叠规则决定的 [css-cascade-3]

请注意,这要求实现必须保持CSS声明块中声明的相对顺序, 这在之前的CSS层叠中是未要求的。

例如,给定以下规则:
p {
  margin-inline-start: 1px;
  margin-left: 2px;
  margin-inline-end: 3px;
}

在计算的 书写模式horizontal-tb 和计算的 方向ltr 的段落中, margin-left 的计算值为 2px, 因为对于该 书写模式方向margin-inline-startmargin-left 共享一个计算值, 并且 margin-left 的声明在 margin-inline-start 之后。 但是,如果计算的 方向 改为 rtlmargin-left 的计算值为 3px, 因为 margin-inline-endmargin-left 共享一个计算值, 并且 margin-inline-end 的声明在 margin-left 之后。

[CSSOM] 返回计算值的API (如 getComputedStyle()) 必须为这些等效属性对返回相同的值。

关于 相对流方向属性的继承顺序与映射 以及简写与逻辑属性的交互 存在一些未解决的问题。

4.1. 逻辑高度和逻辑宽度:block-sizeinline-size 属性

名称: block-size, inline-size
值: <‘width’>
初始值: auto
适用于: widthheight
继承:
百分比: 同相应的物理属性
计算值: widthheight
规范顺序: 依语法
可动画: widthheight

这些属性对应于 widthheight 属性。 映射取决于元素的 书写模式

名称: min-block-size, min-inline-size
值: <‘min-width’>
初始值: 0
适用于: widthheight
继承:
百分比: 同相应的物理属性
计算值: min-widthmin-height
规范顺序: 依语法
可动画: min-widthmin-height

这些属性对应于 min-widthmin-height 属性。 映射取决于元素的 书写模式

名称: max-block-size, max-inline-size
值: <‘max-width’>
初始值: none
适用于: widthheight
继承:
百分比: 同相应的物理属性
计算值: max-widthmax-height
规范顺序: 依语法
可动画: max-widthmax-height

这些属性对应于 max-widthmax-height 属性。 映射取决于元素的 书写模式

4.2. 相对流方向的边距: margin-block-startmargin-block-endmargin-inline-startmargin-inline-end 属性以及 margin-blockmargin-inline 简写

名称: margin-block-start, margin-block-endmargin-inline-startmargin-inline-end
值: <‘margin-top’>
初始值: 0
适用于: margin-top
继承:
百分比: 同相应的物理属性
计算值: 同相应的 margin-* 属性
规范顺序: 依语法
可动画: margin-top

这些属性对应于 margin-topmargin-bottommargin-leftmargin-right 属性。 映射取决于元素的 书写模式方向文字方向

名称: margin-block, margin-inline
值: <‘margin-left’>{1,2}
初始值: 参见各个属性
适用于: 参见各个属性
继承: 参见各个属性
百分比: 参见各个属性
计算值: 参见各个属性
动画类型: 参见各个属性
规范顺序: 依语法

这两个 简写属性 分别设置了 margin-block-startmargin-block-end 以及 margin-inline-startmargin-inline-end。 第一个值表示 开始 边样式, 第二个值表示 结束 边样式。 如果只给出了一个值,它将同时适用于 开始结束 边。

4.3. 相对流方向的偏移: inset-block-startinset-block-endinset-inline-startinset-inline-end 属性,以及 inset-blockinset-inlineinset 简写

名称: inset-block-startinset-block-endinset-inline-startinset-inline-end
值: <‘top’>
初始值: auto
适用于: 定位元素
继承:
百分比: 同相应的物理属性
计算值: 同相应的 top/right/bottom/left 属性
规范顺序: 依语法
可动画: top

这些属性对应于 topbottomleftright 属性。 映射取决于元素的 书写模式方向文字方向

名称: inset-block, inset-inline
值: <‘top’>{1,2}
初始值: 参见各个属性
适用于: 参见各个属性
继承: 参见各个属性
百分比: 参见各个属性
计算值: 参见各个属性
动画类型: 参见各个属性
规范顺序: 依语法

这两个 简写属性 分别设置了 inset-block-startinset-block-end 以及 inset-inline-startinset-inline-end, 第一个值表示 开始 边样式, 第二个值表示 结束 边样式。 如果只给出了一个值,它将同时适用于 开始结束 边。

名称: inset
值: <‘top’>{1,4}
初始值: 参见各个属性
适用于: 参见各个属性
继承: 参见各个属性
百分比: 参见各个属性
计算值: 参见各个属性
动画类型: 参见各个属性
规范顺序: 依语法

这个 简写属性 设置了 toprightbottomleft 属性。 值按照 子属性 的分配方式处理,类似于 margin

4.4. 相对流方向的内边距: padding-block-startpadding-block-endpadding-inline-startpadding-inline-end 属性,以及 padding-blockpadding-inline 简写

名称: padding-block-startpadding-block-endpadding-inline-startpadding-inline-end
值: <‘padding-top’>
初始值: 0
适用于: 所有元素
继承:
百分比: 同相应的物理属性
计算值: 同相应的 padding-* 属性
规范顺序: 依语法
可动画: padding-top

这些属性对应于 padding-toppadding-bottompadding-leftpadding-right 属性。 映射取决于元素的 书写模式方向文字方向

名称: padding-block, padding-inline
值: <‘padding-left’>{1,2}
初始值: 参见各个属性
适用于: 参见各个属性
继承: 参见各个属性
百分比: 参见各个属性
计算值: 参见各个属性
动画类型: 参见各个属性
规范顺序: 依语法

这两个 简写属性 设置了 padding-block-startpadding-block-end,以及 padding-inline-startpadding-inline-end。 第一个值表示 开始 边样式, 第二个值表示 结束 边样式。 如果只给出了一个值,它将同时适用于 开始结束 边。

4.5. 相对流方向的边框

4.5.1. 相对流方向的边框宽度: border-block-start-widthborder-block-end-widthborder-inline-start-widthborder-inline-end-width 属性,以及 border-block-widthborder-inline-width 简写

名称: border-block-start-widthborder-block-end-widthborder-inline-start-widthborder-inline-end-width
值: <‘border-top-width’>
初始值: medium
适用于: 所有元素
继承:
百分比: 不适用
计算值: 同相应的 border-*-width 属性
规范顺序: 依语法
可动画: border-top-width

这些属性对应于 border-top-widthborder-bottom-widthborder-left-widthborder-right-width 属性。 映射取决于元素的 书写模式方向文字方向

名称: border-block-widthborder-inline-width
值: <‘border-top-width’>{1,2}
初始值: 参见各个属性
适用于: 参见各个属性
继承: 参见各个属性
百分比: 参见各个属性
计算值: 参见各个属性
动画类型: 参见各个属性
规范顺序: 依语法

这两个 简写属性 设置了 border-block-start-widthborder-block-end-width 以及 border-inline-start-widthborder-inline-end-width, 第一个值表示 开始 边宽度, 第二个值表示 结束 边宽度。 如果只给出了一个值,它将同时适用于 开始结束 边。

4.5.2. 相对流方向的边框样式: border-block-start-styleborder-block-end-styleborder-inline-start-styleborder-inline-end-style 属性,以及 border-block-styleborder-inline-style 简写

名称: border-block-start-styleborder-block-end-styleborder-inline-start-styleborder-inline-end-style
值: <‘border-top-style’>
初始值: none
适用于: 所有元素
继承:
百分比: 不适用
计算值: 同相应的 border-*-style 属性
规范顺序: 依语法
可动画: border-top-style

这些属性对应于 border-top-styleborder-bottom-styleborder-left-styleborder-right-style 属性。 映射取决于元素的 书写模式方向文字方向

名称: border-block-styleborder-inline-style
值: <‘border-top-style’>{1,2}
初始值: 参见各个属性
适用于: 参见各个属性
继承: 参见各个属性
百分比: 参见各个属性
计算值: 参见各个属性
动画类型: 参见各个属性
规范顺序: 依语法

这两个 简写属性 设置了 border-block-start-styleborder-block-end-style 以及 border-inline-start-styleborder-inline-end-style, 第一个值表示 开始 边样式, 第二个值表示 结束 边样式。 如果只给出了一个值,它将同时适用于 开始结束 边。

4.5.3. 相对流方向的边框颜色: border-block-start-colorborder-block-end-colorborder-inline-start-colorborder-inline-end-color 属性,以及 border-block-colorborder-inline-color 简写

名称: border-block-start-colorborder-block-end-colorborder-inline-start-colorborder-inline-end-color
值: <‘border-top-color’>
初始值: currentcolor
适用于: 所有元素
继承:
百分比: 不适用
计算值: 同相应的 border-*-color 属性
规范顺序: 依语法
可动画: border-top-color

这些属性对应于 border-top-colorborder-bottom-colorborder-left-colorborder-right-color 属性。 映射取决于元素的 书写模式方向文字方向

名称: border-block-colorborder-inline-color
值: <‘border-top-color’>{1,2}
初始值: 参见各个属性
适用于: 参见各个属性
继承: 参见各个属性
百分比: 参见各个属性
计算值: 参见各个属性
动画类型: 参见各个属性
规范顺序: 依语法

这两个 简写属性 设置了 border-block-start-colorborder-block-end-color 以及 border-inline-start-colorborder-inline-end-color, 分别。 第一个值表示 开始 边样式, 第二个值表示 结束 边样式。 如果只给出了一个值,它将同时适用于 开始结束 边。

4.5.4. 相对流方向的边框简写: border-block-startborder-block-endborder-inline-startborder-inline-end 属性,以及 border-blockborder-inline 简写

名称: border-block-startborder-block-endborder-inline-startborder-inline-end
值: <‘border-top-width’> || <‘border-top-style’> || <color>
初始值: 参见各个属性
适用于: 参见各个属性
继承:
百分比: 不适用
计算值: 同相应的 border-*-widthborder-*-styleborder-*-color 属性
规范顺序: 依语法
可动画: 参见各个属性

这些属性对应于 border-topborder-bottomborder-leftborder-right 属性。 映射取决于元素的 书写模式方向文字方向

名称: border-blockborder-inline
值: <‘border-block-start’>
初始值: 参见各个属性
适用于: 参见各个属性
继承:
百分比: 不适用
计算值: 参见各个属性
动画类型: 参见各个属性
规范顺序: 依语法

这两个 简写属性 设置了 border-block-startborder-block-end 以及 border-inline-startborder-inline-end

4.6. 相对流方向的圆角: border-start-start-radiusborder-start-end-radiusborder-end-start-radiusborder-end-end-radius 属性

名称: border-start-start-radiusborder-start-end-radiusborder-end-start-radiusborder-end-end-radius
值: <‘border-top-left-radius’>
初始值: border-top-left-radius 相同
适用于: 所有元素
继承:
百分比: border-top-left-radius 相同
计算值: 与对应的物理 border-*-radius 属性相同
规范顺序: 按语法
可动画: border-top-left-radius 相同

这些属性对应于 border-top-left-radiusborder-bottom-left-radiusborder-top-right-radiusborder-bottom-right-radius 属性。 映射取决于元素的 书写模式方向文字方向

4.7. 四向简写属性:marginpaddingborder-widthborder-styleborder-color 简写

margin、padding 和 border 的简写属性默认设置物理属性的值。 但作者可以在属性值的开头指定 logical 关键字, 以指示这些值映射到流相对属性,而不是物理属性。

此功能的建议语法正在讨论中,几乎可以肯定会改变目前所述内容。 本节保留在草案中是为了促进讨论替代方案,记录受影响的属性, 并说明最终选定的语法切换对解释的预期影响。

以下 [CSS21] 简写属性接受 logical 关键字:

这些属性的语法通过将

<value-type>{1,4}

替换为

logical? <value-type>{1,4}

当值中包含 logical 关键字时, 后续值将分配给其流相对长手属性,如下所示:

在以下示例中,两个规则是等价的:
blockquote {
  margin: logical 1em 2em 3em 4em;
}
blockquote {
  margin-block-start:  1em;
  margin-inline-start: 2em;
  margin-block-end:    3em;
  margin-inline-end:   4em;
}

5. 致谢

Cameron McCormack, David Baron, Shinyu Murakami, Tab Atkins

6. 变更

自上一个工作草案以来的变更包括:

早期编辑草案与2017年5月18日首次公开工作草案之间的变更包括:

一致性

文档约定

一致性要求通过描述性断言和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不符合规范。(例如,UA并不要求在单色显示器上渲染颜色。)

如果创作工具编写的样式表在语法上符合通用CSS语法以及模块中每个特性的个别语法,并满足模块中描述的样式表的所有其他一致性要求,则该创作工具符合本规范。

CSS负责任的实施要求

以下章节定义了几个负责任实施CSS的规范性要求,以促进当前和未来的互操作性。

部分实现

为了使作者能够利用向前兼容的解析规则分配回退值,CSS渲染器必须将任何不支持的at规则、属性、属性值、关键字及其他语法结构视为无效,并适当忽略。尤其是,用户代理不得选择性忽略不支持的属性值并在单个多值属性声明中接受支持的值:如果任何值被视为无效(如不支持的值必须是),CSS要求忽略整个声明。

不稳定和专有功能的实现

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

CR级别功能的实现

一旦规范达到候选推荐阶段,实施者应发布任何已证明正确实现的CR级别功能的无前缀实现,并避免暴露该功能的带前缀变体。

为了建立和维护CSS跨实现的互操作性,CSS工作组请求非实验性CSS渲染器在发布任何CSS功能的无前缀实现之前,向W3C提交实现报告(如有必要,还应提交实现报告中使用的测试用例)。提交给W3C的测试用例将由CSS工作组进行审核和修正。

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

索引

本规范定义的术语

通过引用定义的术语

参考文献

规范性引用

[CSS-BACKGROUNDS-3]
Bert Bos; Elika Etemad; Brad Kemper. CSS 背景与边框模块第 3 级. 2017年10月17日. CR. URL: https://www.w3.org/TR/css-backgrounds-3/
[CSS-BOX-3]
Elika Etemad. CSS 盒模型模块第 3 级. 2018年8月9日. WD. URL: https://www.w3.org/TR/css-box-3/
[CSS-BREAK-3]
Rossen Atanassov; Elika Etemad. CSS 分割模块第 3 级. 2017年2月9日. CR. URL: https://www.w3.org/TR/css-break-3/
[CSS-CASCADE-3]
Elika Etemad; Tab Atkins Jr.. CSS 层叠与继承第 3 级. 2016年5月19日. CR. URL: https://www.w3.org/TR/css-cascade-3/
[CSS-CASCADE-4]
Elika Etemad; Tab Atkins Jr.. CSS 层叠与继承第 4 级. 2016年1月14日. CR. URL: https://www.w3.org/TR/css-cascade-4/
[CSS-COLOR-3]
Tantek Çelik; Chris Lilley; David Baron. CSS 颜色模块第 3 级. 2018年6月19日. REC. URL: https://www.w3.org/TR/css-color-3/
[CSS-DISPLAY-3]
Tab Atkins Jr.; Elika Etemad. CSS 显示模块第 3 级. 2018年8月9日. WD. URL: https://www.w3.org/TR/css-display-3/
[CSS-POSITION-3]
Rossen Atanassov; Arron Eicholz. CSS 定位布局模块第 3 级. 2016年5月17日. WD. URL: https://www.w3.org/TR/css-position-3/
[CSS-SCROLL-SNAP-1]
Matt Rakow; 等人. CSS 滚动捕捉模块第 1 级. 2018年8月14日. CR. URL: https://www.w3.org/TR/css-scroll-snap-1/
[CSS-TEXT-3]
Elika Etemad; Koji Ishii. CSS 文本模块第 3 级. 2017年8月22日. WD. URL: https://www.w3.org/TR/css-text-3/
[CSS-UI-3]
Tantek Çelik; Florian Rivoal. CSS 基础用户界面模块第 3 级 (CSS3 UI). 2018年6月21日. REC. URL: https://www.w3.org/TR/css-ui-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS 值与单位模块第 4 级. 2018年8月14日. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS-WRITING-MODES-3]
Elika Etemad; Koji Ishii. CSS 书写模式第 3 级. 2018年5月24日. CR. URL: https://www.w3.org/TR/css-writing-modes-3/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS 书写模式第 4 级. 2018年5月24日. CR. URL: https://www.w3.org/TR/css-writing-modes-4/
[CSS21]
Bert Bos; 等人. 级联样式表第 2 级修订版(CSS 2.1)规范. 2011年6月7日. REC. URL: https://www.w3.org/TR/CSS2/
[CSSOM]
Simon Pieters; Glenn Adams. CSS 对象模型(CSSOM). 2016年3月17日. WD. URL: https://www.w3.org/TR/cssom-1/
[RFC2119]
S. Bradner. 在 RFCs 中使用的关键字以表示需求级别. 1997年3月. 最佳现行实践. URL: https://tools.ietf.org/html/rfc2119

属性索引

名称 初始值 适用对象 继承性 百分比 是否可动画 动画类型 规范顺序 计算值
block-size <‘width’> auto 同 width 和 height 与对应的物理属性相同 与 width, height 相同 按语法顺序 与 width, height 相同
border-block <‘border-block-start’> 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
border-block-color <‘border-top-color’>{1,2} 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
border-block-end <‘border-top-width’> || <‘border-top-style’> || <color> 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
border-block-end-color <‘border-top-color’> currentcolor 所有元素 n/a 与 border-top-color 相同 按语法顺序 与对应的 border-*-color 属性相同
border-block-end-style <‘border-top-style’> none 所有元素 n/a 与 border-top-style 相同 按语法顺序 与对应的 border-*-style 属性相同
border-block-end-width <‘border-top-width’> medium 所有元素 n/a 与 border-top-width 相同 按语法顺序 与对应的 border-*-width 属性相同
border-block-start <‘border-top-width’> || <‘border-top-style’> || <color> 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
border-block-start-color <‘border-top-color’> currentcolor 所有元素 n/a 与 border-top-color 相同 按语法顺序 与对应的 border-*-color 属性相同
border-block-start-style <‘border-top-style’> none 所有元素 n/a 与 border-top-style 相同 按语法顺序 与对应的 border-*-style 属性相同
border-block-start-width <‘border-top-width’> medium 所有元素 n/a 与 border-top-width 相同 按语法顺序 与对应的 border-*-width 属性相同
border-block-style <‘border-top-style’>{1,2} 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
border-block-width <‘border-top-width’>{1,2} 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
border-end-end-radius <‘border-top-left-radius’> 与 border-top-left-radius 相同 所有元素 与 border-top-left-radius 相同 与 border-top-left-radius 相同 按语法顺序 与对应的物理 border-*-radius 属性相同
border-end-start-radius <‘border-top-left-radius’> 与 border-top-left-radius 相同 所有元素 与 border-top-left-radius 相同 与 border-top-left-radius 相同 按语法顺序 与对应的物理 border-*-radius 属性相同
border-inline <‘border-block-start’> 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
border-inline-color <‘border-top-color’>{1,2} 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
border-inline-end <‘border-top-width’> || <‘border-top-style’> || <color> 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
border-inline-end-color <‘border-top-color’> currentcolor 所有元素 n/a 与 border-top-color 相同 按语法顺序 与对应的 border-*-color 属性相同
border-inline-end-style <‘border-top-style’> none 所有元素 n/a 与 border-top-style 相同 按语法顺序 与对应的 border-*-style 属性相同
border-inline-end-width <‘border-top-width’> medium 所有元素 n/a 与 border-top-width 相同 按语法顺序 与对应的 border-*-width 属性相同
border-inline-start <‘border-top-width’> || <‘border-top-style’> || <color> 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
border-inline-start-color <‘border-top-color’> currentcolor 所有元素 n/a 与 border-top-color 相同 按语法顺序 与对应的 border-*-color 属性相同
border-inline-start-style <‘border-top-style’> none 所有元素 n/a 与 border-top-style 相同 按语法顺序 与对应的 border-*-style 属性相同
border-inline-start-width <‘border-top-width’> medium 所有元素 n/a 与 border-top-width 相同 按语法顺序 与对应的 border-*-width 属性相同
border-inline-style <‘border-top-style’>{1,2} 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
border-inline-width <‘border-top-width’>{1,2} 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
border-start-end-radius <‘border-top-left-radius’> 与 border-top-left-radius 相同 所有元素 与 border-top-left-radius 相同 与 border-top-left-radius 相同 按语法顺序 与对应的物理 border-*-radius 属性相同
border-start-start-radius <‘border-top-left-radius’> 与 border-top-left-radius 相同 所有元素 与 border-top-left-radius 相同 与 border-top-left-radius 相同 按语法顺序 与对应的物理 border-*-radius 属性相同
inline-size <‘width’> auto 同 width 和 height 与对应的物理属性相同 与 width, height 相同 按语法顺序 与 width, height 相同
inset <‘top’>{1,4} 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
inset-block <‘top’>{1,2} 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
inset-block-end <‘top’> auto 定位元素 与对应的物理属性相同 与 top 相同 按语法顺序 与对应的 top/right/bottom/left 属性相同
inset-block-start <‘top’> auto 定位元素 与对应的物理属性相同 与 top 相同 按语法顺序 与对应的 top/right/bottom/left 属性相同
inset-inline <‘top’>{1,2} 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
inset-inline-end <‘top’> auto 定位元素 与对应的物理属性相同 与 top 相同 按语法顺序 与对应的 top/right/bottom/left 属性相同
inset-inline-start <‘top’> auto 定位元素 与对应的物理属性相同 与 top 相同 按语法顺序 与对应的 top/right/bottom/left 属性相同
margin-block <‘margin-left’>{1,2} 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
margin-block-end <‘margin-top’> 0 同 margin-top 与对应的物理属性相同 与 margin-top 相同 按语法顺序 与对应的 margin-* 属性相同
margin-block-start <‘margin-top’> 0 同 margin-top 与对应的物理属性相同 与 margin-top 相同 按语法顺序 与对应的 margin-* 属性相同
margin-inline <‘margin-left’>{1,2} 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
margin-inline-end <‘margin-top’> 0 同 margin-top 与对应的物理属性相同 与 margin-top 相同 按语法顺序 与对应的 margin-* 属性相同
margin-inline-start <‘margin-top’> 0 同 margin-top 与对应的物理属性相同 与 margin-top 相同 按语法顺序 与对应的 margin-* 属性相同
max-block-size <‘max-width’> none 同 width 和 height 与对应的物理属性相同 与 max-width, max-height 相同 按语法顺序 与 max-width, max-height 相同
max-inline-size <‘max-width’> none 同 width 和 height 与对应的物理属性相同 与 max-width, max-height 相同 按语法顺序 与 max-width, max-height 相同
min-block-size <‘min-width’> 0 同 width 和 height 与对应的物理属性相同 与 min-width, min-height 相同 按语法顺序 与 min-width, min-height 相同
min-inline-size <‘min-width’> 0 同 width 和 height 与对应的物理属性相同 与 min-width, min-height 相同 按语法顺序 与 min-width, min-height 相同
padding-block <‘padding-left’>{1,2} 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
padding-block-end <‘padding-top’> 0 所有元素 与对应的物理属性相同 与 padding-top 相同 按语法顺序 与对应的 padding-* 属性相同
padding-block-start <‘padding-top’> 0 所有元素 与对应的物理属性相同 与 padding-top 相同 按语法顺序 与对应的 padding-* 属性相同
padding-inline <‘padding-left’>{1,2} 见各自属性 见各自属性 见各自属性 见各自属性 见各自属性 按语法顺序 见各自属性
padding-inline-end <‘padding-top’> 0 所有元素 与对应的物理属性相同 与 padding-top 相同 按语法顺序 与对应的 padding-* 属性相同
padding-inline-start <‘padding-top’> 0 所有元素 与对应的物理属性相同 与 padding-top 相同 按语法顺序 与对应的 padding-* 属性相同

问题索引

不稳定的事项 由于本模块的一些部分实际上在 Web 上实现 CSS Writing Modes 的发布 (为了正确实现默认的 HTML 样式)是必须的, CSSWG 决议批准了 §2 流向相关的值:block-start, block-end, inline-start, inline-end§4 流向相关的盒模型属性 中的必要功能的发布。 (请参阅 FPWD 公告 以获取更多背景信息。)

然而,仍然存在一些重大悬而未决的问题:

欢迎对这些问题提出意见、建议和用例。 请将它们提交至 GitHub,发送推文至 @csswg,或发送到 www-style@w3.org。
关于流向相关属性中的继承顺序与映射以及简写和逻辑属性的交互有一些未解决的问题。
此功能的提议语法仍在讨论中,几乎可以肯定会与此处描述的不同。 此部分保留在草案中以促进替代方案的讨论, 记录受影响的属性, 并指定无论最终选择何种语法开关, 其对解释的预期影响。