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

CSS2/conform

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

规范一致性:要求与建议

定义

本文档中的关键字“必须”、“禁止”、“需要”、“应当”、“不应”、“建议”、“可能会”和“可选地”应按照RFC 2119中的描述进行解释。为了可读性原因,这些词在本规范中必会以大写字母形式出现。

有时,本规范会向编码人员或用户代理推荐一个优秀实践。这些推荐是非规范的,并且是基于规范的,不依赖它们的实现。这些推荐包含文字“我们推荐……”、“本规范推荐……”或其他类似语句。

事实上,一个被标记为废弃的(即‘aural’关键字)或将要在CSS3中废弃的(即系统颜色)特性不会在符合规范这点上有任何影响。(例如,‘aural’被标记为不规范的,所以用户代理不需要支持它;系统颜色是规范的,所以用户代理必须支持它。)

本规范的所有章节,包括附件,除非特别说明,都是规范的。

实例和注释是不规范的。

通常在实例的起始处附近都包含单词“实例”(“实例:”,“在下列实例中……”,“举例说明,”等),与本段类似。
注:注释以“注:”开始,与本段类似。

图标仅是说明性的。除非显式说明,它们不是参考效果图。

样式表

指定文档表现形式的一系列语句。

样式表可能会有三种不同的来源:编码人员用户用户代理。三种来源之间的相互作用在层叠和继承章节中描述。

有效样式表

样式表的有效性取决于适用于该样式表的CSS等级。所有有效的CSS1样式表都是有效的CSS 2.1样式表,但某些从CSS1的修改造成少量CSS1样式表将在语义上与CSS 2.1有轻微不同。某些CSS2特性不是CSS2.1的一部分,所以不是所有CSS2样式表都是有效的CSS 2.1样式表。

有效的CSS 2.1样式表必须按照CSS 2.1语法书写。此外,其必须仅包含本规范中定义的@规则、属性名和属性值。非法的(无效的)@规则、属性名或属性值都是无效的。

源文档

文档可以应用一个或更多的样式表。其使用某些语言编写,将文档表示为元素树。每个元素由一个标记元素类型的名称、可选的一些属性和一个(可能为空的)内容组成。举例说明,源文档可以是一个XML或SGML实例。

文档语言

源文档的编码语言(例如:HTML、XHTML或SVG)。CSS用于描述文档语言的表现形式,其不会改变文档语言的潜在语义。

元素

一个SGML术语。)文档语言的主要语法构成。大多数CSS样式表规则使用这些元素的名称(例如:HTML中的P、TABLE和OL)来指定这些元素应当如何显示。

替换元素

一个含有内容超出 CSS 布局模型的元素,例如:图片、嵌入文件或applet。举例来说,HTML 的 IMG 元素的内容会用 “src”属性指定的图像替换。替换元素常有固有尺寸:固有宽度、固有高度和固有比例。距离来说,点阵图片具有据对单位的固有宽度和固有长度(由此可以确定绝对比例)。与此相反,其他元素没有任何固有尺寸(举例来说,一个空白的 HTML 文件)。

若替换元素文件的尺寸可能泄漏隐私信息给第三方,用户代理可假设替换元素没有任何固有尺寸。举例来说,若一个 HTML 文件根据使用者的银行存款数改变固有大小,则用户代理可以假装该文件没有固有尺寸。

CSS 渲染模型不定义替换元素内容的处理。

固有维数

元素自身定义的宽度和高度,不受环境限制。CSS没有定义如何找到固有维数。在CSS 2.1中,仅有替换元素可以拥有固有维数。栅格图像的分辨率信息并不可靠,必须假定每个图像源像素的单位大小为1 px。

属性

与一个元素相关联的一个值,由一个名称和一个相关联的(文本)值组成。

内容

与在源文档中的一个元素相关联的内容。有些元素没有内容,在这种情况下它们被称为。一个元素的内容可能会包含文本,也可能会包含一些子元素,在这种情况下该元素被称为这些子元素的父亲

忽略

这个术语在本规范中有两个轻微不同的意义。第一个,CSS解析器在样式表中发现未知或非法的语法时必须遵循一些规则。之后解析器必须忽略样式表中的某些部分。必须忽略的部分的精确规则在一些章节中(声明及属性解析错误的处理规则未支持的值)进行描述或者出现术语“忽略”时可能会解释文本。第二个,用户代理可能会(并且在某些情况下必须)忽视样式表中的某些属性或值,即使其语法合法。例如:table-column元素不能影响列的字体,所以必须忽略font属性。

显示内容

在对一个元素应用适用于该元素的相关样式表之后所表现的内容。本规范没有定义如何呈现替换元素的内容。显示内容可能还会替换元素的文本(例如,XHTML‘alt’属性的值),并且可能会包含根据样式表隐式或显式地插入项目,例如圆点或序号等。

文档树

源文档编码的元素的树。这个树中的每个元素都恰好拥有一个父亲,除了元素,其没有父亲。

孩子

当且仅当元素B是元素A的父亲时,元素A被称为元素B的孩子。

后代

如果(1)元素A是元素B的孩子,或者(2)元素A是作为元素B后代的元素C的孩子,则元素A被称为元素B的后代。

祖先

当且仅当元素B是元素A的后代时,元素A被称为元素B的祖先。

兄弟

当且仅当元素B和元素A拥有同一个父亲元素时,元素A被称为元素B的兄弟。如果在文档树中元素A在元素B之前则元素A是一个前序兄弟。如果在文档树中元素B在元素A之后则元素B是一个后继兄弟。

前驱元素

当且仅当(1)元素A是元素B的祖先,或者(2)元素A是元素B的前序兄弟时,元素A被称为元素B的前序元素。

后继元素

当且仅当元素B是元素A的前序元素时,元素A被称为元素B的后继元素。

作者

作者是撰写文档和相关样式表的人。编码工具是一种生成样式表的用户代理。

用户

用户是在视觉、听觉或其他使用文档及其相关样式表的方式上与用户代理交互的人。用户可能会提供包含个人偏好的个人样式表。

用户代理

用户代理是解释使用文档语言编写的文档并按照本规范的术语应用相关样式表的程序。一个用户代理可能会显示文档、出声朗读、印刷、转换为其他格式等。

HTML用户代理支持一种或多种HTML规范。支持XHTML而不支持HTML的用户代理,基于适用于本规范的目的,不认为是HTML用户代理。

属性

CSS定义了一个有限的参数集合,被称为属性。它指导文档的显示。每个属性拥有一个名称(例如:‘color'、‘font’或‘border’)和一个值(例如:‘red’、‘12pt Times’或‘dotted’)。属性被附加到文档的各个部分以及根据特异性、层级和继承机制(查看指配属性值、层叠与继承)显示文档的页面上。

 下面是使用HTML编写的源文档的实例:
 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>   
   <TITLE>我的主页</TITLE>
   <BODY>
     <H1>我的主页</H1>
     <P>欢迎来到我的主页!让我们讨论我最喜欢的
                   音乐家:
     <UL>
       <LI> Elvis Costello
       <LI> Johannes Brahms
       <LI> Georges Brassens
     </UL>
   </BODY>
 </HTML>
 
 结果是下列树:
 
http://www.w3.org/TR/CSS21/images/doctree.png
 
根据HTML 4的定义,将在解析时推断HEAD元素并将其作为文档树的一部分,即使“head”标签不在文档源文件之中。同样的,解析器知道P和LI元素在何处结束,即使源文件中没有</p>和</li>标记。

按照XHTML(以及其他基于XML语言)编写的文档的表现不同:它们不会推测元素且所有元素必须拥有结束标记。

用户代理规范要求

本节仅定义符合CSS 2.1规范。未来可能会在其他等级的CSS中要求用户代理实现不同的特性以符合规范。

通常,要求符合本规范的用户代理必须遵守以下几点:

  1. 必须至少识别一种CSS 2.1媒体类型
  2. 对于每个源文档,必须检索所有对应公认媒体类型的相关样式表。如果不能检索所有相关样式表(例如因为网络错误),必须使用那些可以检索到的样式表显示文档。
  3. 必须按照本规范解析样式表。特别的,必须识别所有@规则、块、声明和选择器(参见CSS 2.1语法)。如果用户代理发现应用于可支持媒体类型的属性,则用户代理必须按照该属性的定义解析其值。这意味着用户代理必须接受所有有效的值并且必须忽略无效的值的声明。用户代理必须忽略应用于不支持的媒体类型的规则。
  4. 对于所有文档树中的元素,必须按照属性的定义和级联、继承规则指派每个属性的值,
  5. 如果源文档带有备用样式表集(例如HTML4中的“alternate”关键字),则用户代理必须允许用户选择器应当应用哪一个样式表集。
  6. 用户代理必须允许用户关闭作者样式的影响。

并非所有用户代理都必须遵守每一点,然而:

  • 一个读取样式表但不渲染任何内容的应用(例如CSS 2.1验证器)必须遵守1-3。
  • 编码人员工具仅需输出有效的样式表
  • 根据相关样式表渲染文档的用户代理必须遵守1-6,并按照本规范提出的媒体特定的要求渲染文档。如果用户代理需要,值可以被估算。

用户代理没有能力实现本规范中的一部分造成在特定设备上受限(例如用户代理不能再单色显示器或纸张上渲染颜色)不意味着其不符合规范。

用户代理必须允许用户指定一个包含用户样式表的文件。运行在不能编写或指定文件的设备上的用户代理可以忽略此条要求。此外,用户代理可能会提供其他方式来指定用户偏好,例如通过GUI。

CSS 2.1没有定义应用于表单控件及框架的属性,或者说没有定义如何样式化它们。用户代理可能会将CSS属性应用于这些元素。我们推荐编码人员实验性地讨论这些支持。未来的CSS等级可能会指定这些特性。

错误状况

一般情况下,此文档指定的错误处理行为贯穿整个规范。例如,参阅处理解析错误规则

text/css内容类型

存在于独立文件中的CSS样式表在Internet中以包含编码信息的字节序列进行传输。传递的结构被称为消息实体,在RFC 2045RFC 2616中定义。内容类型为“text/css”的消息实体表示一个独立的CSS文档。“text/css”内容类型注册在RFC 2318中。