1 关于 CSS 2.2 规范

目录

1.1 CSS 2.2 与 CSS 2

自 1998 年 CSS2 规范成为推荐标准以来,CSS 社区在使用该规范方面积累了大量经验。CSS2 规范中的错误随后在 2011 年发布的第一次修订版[CSS21]中得到了纠正,但仍然需要新的勘误。

尽管许多问题将由即将发布的 CSS3 规范解决,但目前的情况妨碍了 CSS2 的实现和互操作性。CSS 2.2 规范试图通过以下方式解决这种情况:

因此,虽然 CSS2 样式表不一定与 CSS 2.2 向前兼容,但限制在 CSS 2.2 功能范围内的样式表更有可能在今天找到一个符合规范的用户代理,并在未来保持向前兼容性。尽管破坏向前兼容性并不可取,但我们认为 CSS 2.2 修订的优点是值得的。

CSS 2.2 源自并旨在取代 CSS 2.1 和 CSS2。CSS 2.2 中有些部分与 CSS2 保持不变,有些部分已被修改,还有一些部分被删除。删除的部分可能会在未来的 CSS3 规范中使用。未来的规范应该引用 CSS 2.2(除非它们需要 CSS2 中在 CSS 2.2 中被删除的功能,在这种情况下,它们应仅为这些功能引用 CSS2,或者最好引用包含这些功能的相应 CSS3 模块)。

1.2 阅读规范

本节为非规范性内容。

本规范针对两类读者编写:CSS 作者和 CSS 实现者。我们希望本规范能为作者提供编写高效、美观且无障碍文档所需的工具,而不过多暴露 CSS 的实现细节。然而,实现者应能在本规范中找到构建符合规范的用户代理所需的所有内容。

规范从 CSS 的一般介绍开始,并在接近结尾时逐渐变得更加技术性和具体化。为了快速访问信息,电子版和印刷版中都提供了总目录、各部分开头的具体目录以及索引,以便于导航。

本规范编写时考虑了两种展示模式:电子版和印刷版。尽管这两种展示方式无疑会非常相似,但读者会发现一些差异。例如,链接在印刷版中无法使用(显然),页码不会出现在电子版中。如果出现差异,以电子版为该文档的权威版本。

1.3 规范的组织结构

本节为非规范性内容。

本规范分为以下几个部分:

第2节:CSS 2.2 简介
简介包括一个 CSS 2.2 的简要教程和对 CSS 2.2 背后设计原则的讨论。
第3至18节:CSS 2.2 参考手册
参考手册的主要内容是 CSS 2.2 语言参考。该参考手册定义了 CSS 2.2 样式表的内容(语法、属性、属性值)以及用户代理必须如何解释这些样式表,以便声称符合规范
附录:
附录包含有关听觉属性(非规范性)、HTML 4 的示例样式表CSS 2.1 的变更CSS 2.2 的语法的信息,以及规范性和信息性参考文献列表,还有两个索引:一个是属性索引,另一个是综合索引

1.4 约定

1.4.1 文档语言元素和属性

1.4.2 CSS 属性定义

每个 CSS 属性定义以类似以下内容的关键信息摘要开头:

名称: property-name
值: 合法值与语法
初始值: 初始值
适用于: 该属性适用的元素
继承: 属性是否继承
百分比: 如何解释百分比值
媒体: 该属性适用的媒体组
计算值: 如何计算计算值

1.4.2.1

此部分指定名称为'property-name'的属性的有效值集。属性值可以包含一个或多个组件。组件值类型通过以下几种方式指定:

  1. 关键字值(例如,auto、disc 等)。
  2. 基本数据类型,出现在“<”和“>”之间(例如,<length>,<percentage> 等)。在文档的电子版中,每个基本数据类型实例都链接到其定义。
  3. 具有与同名属性相同值范围的类型(例如,<'border-width'>,<'background-attachment'> 等)。在这种情况下,类型名称是属性名称(包括引号),出现在“<”和“>”之间(例如,<'border-width'>)。这种类型包括值 'inherit'。在文档的电子版中,这种非终端符类型的每个实例都链接到相应的属性定义。
  4. 非终端符,其名称与属性名称不同。在这种情况下,非终端符名称出现在“<”和“>”之间,例如 <border-width>。注意 <border-width> 和 <'border-width'> 之间的区别;后者以前者为基础定义。非终端符的定义位于其在规范中首次出现的地方附近。在文档的电子版中,这种值类型的每个实例都链接到相应的值定义。

在这些定义中的其他词是必须按字面出现的关键字,不带引号(例如,red)。斜杠 (/) 和逗号 (,) 也必须按字面出现。

组件值可以如下排列成属性值:

并列关系比双与号强,双与号比双竖线强,双竖线比竖线强。因此,以下几行是等价的:

    a b   |   c ||   d &&   e f
  [ a b ] | [ c || [ d && [ e f ]]]

每种类型、关键字或括号内的组后面都可以跟随以下修饰符之一:

以下示例说明了不同的值类型:

值: N | NW | NE
值: [ <length> | thick | thin ]{1,4}
值: [<family-name> , ]* <family-name>
值: <uri>? <color> [ / <color> ]?
值: <uri> || <color>
值: inset? && [ <length>{2,4} && <color>? ]

组件值是根据标记指定的,如附录 G.2所述。由于语法允许在expr生成式的组件之间插入空格,属性值中的标记之间可能会出现空格。

注意:在许多情况下,实际上需要在标记之间插入空格,以便将它们彼此区分开。例如,值 '1em2em' 将被解析为一个包含数字 '1' 和标识符 'em2em' 的单一DIMEN标记,而这是一个无效的单位。在这种情况下,需要在 '2' 前插入一个空格,以将其解析为两个长度 '1em' 和 '2em'。

1.4.2.2 初始值

此部分指定属性的初始值。有关样式表指定的、继承的和初始属性值之间的相互作用,请参阅级联部分的信息。

1.4.2.3 适用于

此部分列出了属性适用的元素。所有元素都被认为具有所有属性,但某些属性对某些类型的元素没有渲染效果。例如,'clear'属性仅影响块级元素。

1.4.2.4 继承

此部分指示属性的值是否从祖先元素继承。有关样式表指定的、继承的和初始属性值之间的相互作用,请参阅级联部分的信息。

1.4.2.5 百分比值

此部分指示在属性值中出现百分比时应如何解释。如果此处显示为“N/A”,则表示该属性的值不接受百分比。

1.4.2.6 媒体组

此部分指示该属性适用的媒体组。有关媒体组的信息是非规范性的。

1.4.2.7 计算值

此部分描述了该属性的计算值。有关如何使用此定义,请参阅计算值部分。

1.4.3 简写属性

有些属性是简写属性,这意味着它们允许作者通过一个属性来指定多个属性的值。

例如,'font'属性是一个简写属性,用于一次性设置'font-style''font-variant''font-weight''font-size''line-height''font-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 }

在此示例中,'font-variant''font-style'将采用其初始值。

1.4.4 注释和示例

所有用于说明非法用法的示例都明确标记为“非法示例”。

缺少 DOCTYPE 声明的 HTML 示例是符合 HTML 4.01 Strict DTD 的 SGML 文本实体[HTML4]。其他 HTML 示例符合示例中给出的 DTD。

所有注释仅供参考。

示例和注释在规范的源 HTML 中进行了标记,并且 CSS 用户代理将对它们进行特殊渲染。

1.4.5 图像和长描述

本规范电子版中的大多数图像都附有它们所代表内容的“长描述”。图像后的“[D]”表示指向长描述的链接。

图像和长描述仅供参考。

1.5 致谢

本节为非规范性内容。

CSS 2.2 基于 CSS2 和 CSS 2.1。请参阅CSS2 的致谢部分CSS 2.1 的致谢部分,了解对 CSS2 和 CSS 2.1 做出贡献的人员。

我们要感谢以下人员,他们通过在 www-style 邮件列表上的意见和反馈,帮助我们创建了本规范: 待定。

此外,我们还要特别感谢 待定。

我们还要感谢以下人员对测试套件的帮助: 待定 …以及所有为 CSS1 测试套件做出贡献的人。