Warning:
This wiki has been archived and is now read-only.
Talk:CSS2
From HTML5 Chinese Interest Group Wiki
Contents
進度
完成率(已翻譯小節數/總小節數):84/252 ≅ 33.3%
本页的编辑者都来自我介绍一下
Kennyluck 呂康豪 網名kennyluck 郵箱kennyluck@w3.org
xiaohao 吴天豪 网名小豪 邮箱maisui99@gmail.com
EricDum 代立晨 网名EricDum/木匠 邮箱formateric@gmail.com 求指导
貢獻提報
新段落推薦表示各個人覺得值得翻譯的章節。
參與者 | 達標段落 | 新段落推薦 | 目標段落 |
---|---|---|---|
RainZhai(未登記) | 9 可视化格式模型(26 節) 10.1 包含块的定义 |
||
kennyluck | 1.4 常規(3 節) 6 指配屬性值、層疊與繼承(6 節) 9 可视化格式模型(3 節) 10 視覺布局模型細節(25 節) 11 視覺效果(4 節) 17 表格(4 節) |
||
苦瓜(未登記) | 18 使用者界面(用户界面)(6 節) | ||
NiuXG | 7 媒介型態(5 節) | 7 媒介型態 1.4.2.2 初始 - 1.4.5 CSS 图像和长描述 3 規範符合:要求與建議 8 盒模型 |
17 表格 |
Xiaohao(未登記) | 5.1 模式匹配 | 选择器 |
核心語法(普遍版)
(1) stylesheet | : [ ignored | statement ]* selector? EOF+;
|
(2) statement | : ruleset | at-rule;
|
(3) at-rule | : ATKEYWORD [ any | ']' | ')' | '}' | ATKEYWORD | CDO | CDC ]* [ block | ';' | EOF ];
|
(4) ruleset | : selector? '{' declaration? [ ';' declaration? ]* [ '}' | EOF ];
|
(5) declaration | : [ no-close | ']' | ')' ]+;
|
(6) selector | : [ any | ';' | ']' | ')' | '}' ] [ any | ';' | ']' | ')' | '}' | ATKEYWORD | CDO | CDC ]*;
|
(7) any | : [ IDENT | NUMBER | PERCENTAGE | DIMENSION | STRING | DELIM | URI | HASH
|
(8) block | : '{' [ no-close | ')' | ';' | ']' ]* [ '}' | EOF ];
|
(9) no-close | : any | block | ATKEYWORD | CDO | CDC;
|
(10) ignored | : [ CDO | CDC ];
|
其中,EOF 是檔案結尾 token。為了可讀性,已將所有空白 token(S)拿掉,空白 token 可以出現在所有地方。這個核心語法描述 CSS 2.1 解析的幾個規則:
- 核心語法的目的,是將一個 stylesheet 分成一個 statement 列,再將每一個是 ruleset 的 statement 的內容分成一個 declaration 列,將這些構造丟給次級語法解析,若是使用者代理不能辨識的構造(@關鍵字不認識、選擇器不認識或是沒有選擇器、屬性不認識),則丟掉整個相應構造。
- 也就是說,丟棄基本上是找尋該構造的結尾(at-rule 的結尾是一個 block 或是一個分號、ruleset 的結尾是一個 block、declaration 的結尾是一個分號或是外圍的右花誇號),但是丟棄過程中遵守 ()、[]、{} 的配對規則(其中 BAD_URI 算作左小誇號)。
- 決定一個 statement 是 at-rule 還是 ruleset 看第一個 token 是不是 ATKEYWORD。
- 檔案尾端自動補完規則(參考原規範範例)。
- CDO、CDC 只在還沒解析第一個 token 的時候會被省略(其餘就是當作不可辨識的 at-rule 或 ruleset 的一部分),在 ruleset 的宣告塊裡也不會被省略。
TODO
- 完整測試這個語法的瀏覽器兼容狀況(特別是 BAD_URI、CDO、CDC 的部份)
- 寫出
@media
的 block 內容語法(其實就是 at-rule、ruleset 前面都不能有 '}' 的 stylesheet。)也要測試一下有沒有在這個地方不省略 CDO、CDC 的瀏覽器。 - 用 EBNF 的 '-' 號讓這個文法更好讀。
- 了解這是 L-?
- 了解各 CSS 解析引擎用(例如:SASS)的合不合這個文法,還是拋錯。