# 關于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測試套件的所有貢獻者。