Warning:
This wiki has been archived and is now read-only.

CSS2/about

From HTML5 Chinese Interest Group Wiki
Jump to: navigation, search

关于 CSS2.1 规范


CSS 2.1 vs CSS 2

CSS社区自1998年CSS2规范被推荐使用后获得了重要的经验。尽管CSS2规范的错误在后来通过其出版的各个勘误表(errata)得到了修正,但还不到根据这些经验改变规范的时机。

而很多问题会在即将到来的CSS3规范中得到处理,当前的事态阻碍了CSS2的实现和操作性。CSS2.1试图通过以下几点来处理这些问题:

  • 兼容CSS2中已经被广泛接受和实现的部分。
  • 整理所有已经发布的CSS2勘误表。
  • 在实现和CSS2规范完全不同的地方,将规范修改成普遍接受的惯例。
  • 删除CSS2中已被CSS社区拒绝和没有实现的特性。CSS2.1旨在反应在HTML和XML广泛实现的特性(而不是只存在于XML语言或者HTML中特定的部分)。
  • 删除将在CSS3中废弃的CSS2特性,以鼓励采用CSS3特性。
  • 加入(很)少数的一些在实现的经验所表明的他们需要在CSS2中实现的新属性值

因此,虽然CSS2.1样式表不是必须要向前兼容CSS2, 而样式表将自己规范成CSS2.1的特性更像是我们今天去寻找到一个兼容的浏览器(User Agent),然后一直维护它的向前兼容性。虽然打破向前的兼容性是不可取的,但我们相信这是值得的。

CSS2.1是从CSS2衍生出来,意在覆盖CSS2。CSS2.1中的CSS2,一部分保持不变,一部分有所修改,并有一部分被移除。 这些被删除的部分有可能会再次出现在未来的CSS3规范中。未来的规范应该参考CSS2.1(除非需要CSS2中被CSS2.1删除的特性,那么对那些特性只应该参考CSS2,或者更好的做法是在CSS3各自的组件中参考这些特性。)

阅读本规范

这部分是非规范的。

本规范提供给两种类型的读者:CSS作者和CSS实现者。我们希望这份规范作为工具提供给那些作者,他们需要写出高效且吸引人的且易于理解的文档,而不是过分强调CSS的实现细节。然而,实现者们应该找出所有这些细节,因为他们需要保持UA行为的一致性。这份规范以CSS的常规表现作为开端,越往后就越深入到具体的技术层面上。为了快速访问到所需的信息,在电子版和印刷版的开头部分都有一个通用的目录,提供每节的链接和了索引,以方便定位。

本规范使用两种形式编写:电子版和印刷版。虽然这两种表现形式会惊人的相似,但读者也可以发现一些差异。例如,超链接无法在印刷版中使用(显然),而页码将不会在电子版上显示。在出现矛盾的时候,电子版将作为此文档的权威版本。

本规范的组织方式

本节不属于规范的部分。

本规范由下面这些章节组成:

第 2 节:CSS 2.1 介绍
    包括一个 CSS 2.1 的简明教程和 CSS 2.1 的设计理念。
第 3 - 18 节: CSS 2.1 参考手册
    大部分是由 CSS 2.1 的语言参考组成。定义了 CSS 2.1 的样式表的组成(语法,属性,属性值)以及浏览器如何解释样式表的声明顺序才能符合所需的一致性。
附录:
    附录包含了关于听觉属性的信息(非规范)、一个简单的基于 HTML4 的样式表实例、和CSS2的差异、CSS 2.1 的语法、规范和参考信息的列表,以及两个目录: 一个属性目录和一个通用目录。

常规

文档语言 元素和属性

  • CSS 属性和伪类的名称用单引号括住。
  • CSS 的值用单引号括住。
  • 文档的语言属性名称使用小写字母,并用双引号括住。

CSS 属性定义

每个CSS属性定义由关键资讯摘要起头,如下:

'property-name'

取值: 合法值&语法
初始: 初始值
适用于: 属性适用的元素
继承: 属性是否可继承
百分比: 百分比值的解析方式
媒体: 属性使用的媒体
计算值: 如何计算计算值
取值
Error creating thumbnail: Unable to save thumbnail to destination

这部分描述属性名为 '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 ]]]

任何一种类型,关键字或分组后面可以接着下列修饰符中的一个:

  • 星号(*)代表前面的类型,文字或分组出现零次及以上。
  • 加号(+)代表前面的类型,文字或分组出现一次及以上。
  • 问号(?)代表前面的类型,文字或分组是可选的(出现零次或一次)。
  • 一堆大括号包裹着数字({A,B})代表前面的类型,文字或分组出现A次以上,B次一下。

一下是不同取值类型的例子:

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

组件的值被定义为术语 tokens,在附录 G.2有所描述。就如同CSS语法允许 expr产生式的各部分token以空白分隔,空白也可以出现在属性值的token之间。

注:在很多情況下,为了分隔各个token,token 之间的空白是「必要的」。举例来说,取值 '1em2em' 会被解析成带有数字‘1’和不合法的单位‘em2em’的单个DIMEN token。在这种情况下,'2'之前的空白是必须的,从而将这个值解析为‘1em’和‘2em’两个长度。
初始

此部分指定属性的初始值。请查阅关于样式表指定、继承和初始属性值之间关联信息的级联章节。

适用于

此部分列出了适用于该属性的元素。所有元素都被认为拥有所有属性,但某些属性不能在某种元素上产生渲染效果。例如:‘clear’属性只影响块级元素。

继承

此部分指定属性的值是否应该从其祖先元素继承。请查阅关于样式表指定、继承和初始属性值之间关联信息的级联章节。

百分比

此部分指定如果百分比出现在属性的值中,应当如何解释它们。如果出现“N/A”,其表示该属性的值不接受百分比。

媒介

此部分指定属性适用于那些媒介。关于媒介的信息是不规范的。

计算值

此部分描述属性的计算值。对于此定义的使用方法,请参阅计算值章节。

简写属性

某些属性是简写属性,这意味着它们允许编码人员使用一个属性指定多个属性的值。

举例说明:‘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’使用其初始值。

注释和实例

所有介绍非法用法的实例都清晰的标注为“ILLEGAL EXAMPLE(非法实例)”。

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

所有注释都只是告知性的。

实例和注释被规范的标记在源HTML中,CSS用户代理将特别地进行渲染。

图像和长描述

大多数本规范电子版本中的图片都伴随有替代他们的“长描述”。到长描述的链接表示为在图片之后的“[D]”。

图片和长描述仅是告知性的。

鸣谢

这部分是非规范的。

CSS 2.1 是基于 CSS2 的。CSS2 的贡献者请参见 CSS2 的鸣谢部分。

我们要感谢下面这些贡献者,他们在www-style邮件列表上的输入和反馈给我们对这份规范的创建带来了帮助:Andrew Clover, Bernd Mielke, C. Bottelier, Christian Roth, Christoph Päper, Claus Färber, Coises, Craig Saila, Darren Ferguson, Dylan Schiemann, Etan Wexler, George Lund, James Craig, Jan Eirik Olufsen, Jan Roland Eriksson, Joris Huizer, Joshua Prowse, Kai Lahmann, Kevin Smith, Lachlan Cannon, Lars Knoll, Lauri Raittila, Mark Gallagher, Michael Day, Peter Sheerin, Rijk van Geijtenbeek, Robin Berjon, Scott Montgomery, Shelby Moore, Stuart Ballard, Tom Gilder, Vadim Plessky, Peter Moulder, Anton Prowse, Gérard Talbot, Ingo Chao, Bruno Fassino, Justin Rogers, Boris Zbarsky, Garrett Smith, Zack Weinberg, Bjoern Hoehrmann, 以及 the OEBPS 工作组的编辑者们。我们还要感谢 Gary Schnabl, Glenn Adams 和 Susan Lesch 帮助我们校对这份规范的早起版本。

此外,我们还要特别感谢 Elika J. Etemad, Ada Chan 和 Boris Zbarsky,他们对 CSS 2.1 有着重大贡献, 并感谢 Kimberly Blessing 帮助我们编辑。

也非常感谢下面的贡献者们,他们通过测试套件给我们带来的帮助: Robert Stam, Aharon Lanin, Alan Gresley, Alan Harder, Alexander Dawson, Arron Eicholz, Bernd Mielke, Bert Bos, Boris Zbarsky, Bruno Fassino, Daniel Schattenkirchner, David Hammond, David Hyatt, Eira Monstad, Elika J. Etemad, Gérard Talbot, Gabriele Romanato, Germain Garand, Hilbrand Edskes, Ian Hickson, James Hopkins, Justin Boss, L. David Baron, Lachlan Hunt, Magne Andersson, Marc Pacheco, Mark McKenzie-Bell, Matt Bradley, Melinda Grant, Michael Turnwall, Ray Kiddy, Richard Ishida, Robert O'Callahan, Simon Montagu, Tom Clancy, Vasil Dinkov, … 以及所有 CSS1 测试套件的贡献者们。

在这份规范的开发期间活动的工作组成员们:César Acebal (Universidad de Oviedo), Tab Atkins Jr. (Google, Inc.), L. David Baron (Mozilla Foundation), Bert Bos (W3C/ERCIM), Tantek Çelik (W3C Invited Experts), Cathy Chan (Nokia), Giorgi Chavchanidze (Opera Software), John Daggett (Mozilla Foundation), Beth Dakin (Apple, Inc.), Arron Eicholz (Microsoft Corp.), Elika J. Etemad (W3C Invited Experts), Simon Fraser (Apple, Inc.), Sylvain Galineau (Microsoft Corp.), Daniel Glazman (Disruptive Innovations), Molly Holzschlag (Opera Software), David Hyatt (Apple, Inc.), Richard Ishida (W3C/ERCIM), John Jansen (Microsoft Corp.), Brad Kemper (W3C Invited Experts), Håkon Wium Lie (Opera Software), Chris Lilley (W3C/ERCIM), Peter Linss (HP), Markus Mielke (Microsoft Corp.), Alex Mogilevsky (Microsoft Corp.), David Singer (Apple Inc.), Anne van Kesteren (Opera Software), Steve Zilles (Adobe Systems Inc.), Ian Hickson (Google, Inc.), Melinda Grant (HP), Øyvind Stenhaug (Opera Software), 和 Paul Nelson (Microsoft Corp.)。