# 关于CSS 2.2规范
> by [九月](https://i.getshell.cn/)
[TOC]
## 1.1 CSS 2.2 vs CSS 2
自1998年K开始,CSS成为了一个规范,CSS社区在CSS2规范下面已取得了显着的经验。CSS2中很多错误在2011年的发布的CSS2.1版本修正,但新的勘误表仍然需要。
尽管即将到来的CSS3规范将解决许多问题,但目前的情况阻碍了CSS2的发展。 CSS 2.2规范试图通过下列发方法解决这个问题:
* 仍旧兼容那些被广泛接受和应用的CSS2的部分
* 合并所有已发布的CSS2勘误表
* 当碰到于CSS2规范中不同的地方时,将规范修改为大家经常用的习惯。
* 删除由于尚未实现而被CSS社区拒绝的CSS2功能。大体上来说, CSS 2.2旨在反映CSS在HTML和XML上面的更广泛实现。(而不仅仅是针对特定的XML语言,或者仅针对HTML)
* 删除将被CSS3废弃的CSS2功能,从而鼓励采用提议的CSS3功能。
* 添加(非常)少量的新的属性值,这些属性值在实践中已经证明是需要加入CSS2中的。
虽然CSS2样式表并一定与CSS2.2兼容,但是将样式表限制为CSS2.2特性的时候,是为了目前找到符合要求的用户需求并保持未来的兼容性。 虽然不兼容并不可取,但我们相信CSS 2.2版本的特性是值得的。
CSS 2.2源于并打算取代CSS 2.1和CSS2。 CSS2中的某些部分在CSS2.2中保持不变,某些部分已被修改,部分部分被删除。 被删除的部分可能用在将来的CSS3规范中。未来的规范应该指的是CSS 2.2(除非他们需要用到CSS2.2中已经被删除,但在CSS2中存在的特性,那么他们应该只参考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文档语言元素和属性
* CSS属性和伪类名由单引号分隔。
* CSS值由单引号分隔。
* 文档语言属性名称使用小写字母,并用双引号分隔。
### 1.4.2 CSS属性定义
每个CSS属性定义都以类似于以下内容的关键信息的摘要开始:
| | |
| --- | --- |
| Name | property-name |
| Value | legal values & syntax |
| Initial | initial value |
| Applies to| elements this property applies to |
| Inherited| whether the property is inherited |
| Percentages| how percentage values are interpreted|
| Media| which media groups the property applies to |
| Computed value | how to compute the computed value |
翻译对比如下:
| | |
| --- | --- |
| 名称 | 属性名称 |
| 价值 | 法律价值和语法 |
| 初始值 | 初始值 |
| 适用于 | 此属性适用的元素 |
| 继承 | 该属性是否被继承 |
| 百分比 | 如何解释百分比值 |
| 媒体 | 属性适用的媒体组 |
| 计算值 | 如何计算计算值 |
#### 1.4.2.1 值
这部分名称为“property-name”的属性指定了一组有效值。 一个属性值可以有一个或多个组成。 组成的值类型有几种指定方式:
1. 关键字值(例如,auto,disc,等等)
2. 出现在“<”和“>”之间的基本数据类型(例如,<length>,<percentage>等)。 在文档的电子版本中,基本数据类型的每个实例都链接到其定义。
3. 具有相同名称的属性或者具有相同范围值的类型(例如,<'border-width'> <'background-attachment'>等)。 在这种情况下,类型名称是“<”和“>”(例如<'border-width'>)之间的属性名称(带引号)。 这种类型不包括“继承”的值。 在文档的电子版本中,这种类型的非终结符的每个实例都链接到相应的属性定义。
4. 非终结符。 在这种情况下,非终结符名称出现在“<”和“>”之间,如<border-width>中所示。 注意<border-width>和<'border-width'>之间的区别; 后者是根据第三点来定义的。 非终结符的定义则是在规范中第一次出现。 在文档的电子版本中,这种类型的值的每个实例链接到相应的值定义。
在规范中,还有其它字面量单词也是属性值,不带引号的(例如,red)。斜杠(/)和逗号(,) 等字面量也可以作为值。
组成的值可以按如下方式排列成属性值:
* 几个并列的词意味着它们都必须以给定的顺序发生。
* 一个条(|)分隔两个或更多的选择:它们中的一个必须发生。
* 双条(||)分隔两个或多个选项:它们中的一个或多个必须以任意顺序出现。
* 双和符(&&)将两个或更多个组件分开,所有这些组件必须以任意顺序出现。
* 括号([])用于分组。
并列比双和符(&&)强,双和符(&&)比双条(||)强,双条(||)比一个条(|)强。 因此,以下几行是等同的:
a b | c || d && e f
[ a b ] | [ c || [ d && [ e f ]]]
每个类型,关键字或括号内的组可以后跟以下修饰符之一:
* 星号(*)表示前面的类型,单词或组发生零次或多次。
* 加号(+)表示前面的类型,单词或组发生一次或多次。
* 问号(?)表示前面的类型,单词或组是可选的。
* 花括号({A,B})中的一对数字表示前面的类型,单词或组的出现次数至少为A,最多为B次。
以下示例说明了不同的值类型:
~~~
Value: N | NW | NE
Value: [ <length> | thick | thin ]{1,4}
Value: [<family-name> , ]* <family-name>
Value: <uri>? <color> [ / <color> ]?
Value: <uri> || <color>
Value: inset? && [ <length>{2,4} && <color>? ]
~~~
如附录G.2所述,组件值由标记表示。 由于语法允许expr生成的组件中的标记之间有空格,因此可能会在属性值中的标记之间出现空格。
> 注意:在许多情况下,实际上在标记之间需要空格以区分它们。 例如,值“1em2em”将被解析为单个DIMEN标记,其编号为“1”,标识符为“em2em”,这是一个无效的单位。 在这种情况下,在'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严格DTD [HTML4]的SGML文本实体。 其他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风格邮件列表的反馈和帮助,帮助我们创建了这个规范:待定。
另外,我们要特别感谢TBD。
还要感谢以下人员对测试套件的帮助:TBD ...以及CSS1测试套件的所有贡献者。