2018年7月10日 星期二

為什麼不會有 CSS4?


簡單地說,就是從 CSS3 開始,CSS 規範就被拆成眾多模組(module)單獨進行升級,或者將新需求作為一個新模組來立項並進行標準化。因此今後不會再有 CSS4、CSS5 這種所謂大版本號的變更,有的只是CSS某個模組級別的躍遷。




引入模組化之前


按照 CSS 工作組的說法,CSS 歷史上並沒有版本的概念,有的只是“級別”(level)的概念。比如,CSS3 其實是 CSS Level 3,CSS2 是 CSS Level 2,而CSS Level 1 當然就是CSS1。每個級別都以上一個級別為基礎。

大家都知道,CSS1 早就作廢了。CSS2 其實基本上也已經作廢了。但是,CSS1、CSS2( 以及CSS2.1 )在當時都是一個大而全的規範。而且,CSS2 在成為最終標準的時候,W3C 規範的流程裡還沒有定義 CR 這個階段。

後來,W3C 進一步完善了規範制定流程,要求每個規範都要經過以下五個階段:
  • 工作草案(WD,Working Draft)
  • 最終工作草案(LC/LCWD,Last Call Working Draft)
  • 候選推薦(CR,Candidate Recommendation)
  • 提議推薦(PR,Proposed Recommendation)
  • 推薦標準(REC,Recommendation)
由於當初CSS2並沒經過CR階段,因此出現了很多問題。CSS工作組被無窮無盡的“改bug”搞得不厭其煩。結果,他們決定對CSS2進行一次修訂,這就是CSS2.1(CSS Level 2 Revision 1)。換句話說,CSS2.1其實只是CSS2的一個修訂版,並沒有實質性變化。有些CSS2中的內容,CSS 工作組認為不夠成熟,於是從 CSS2.1 中刪除了。這些刪除的內容被視為回退到流程的 CR 階段,相當於需要重新審視。(後來,這些內容基本都以 CSS 模組的方式,經過修訂和增補,進入了 CSS Level 3。)

CSS2.1 及之前的 CSS 規範把所有內容都寫在一個文檔裡。隨著 CSS 特性越來越多,越來越複雜,CSS 規範的篇幅也越來越長。CSS2.1 的 PDF 版有430頁(https://www.w3.org/TR/CSS2/css2.pdf)。這就給勘誤和進一步升級帶來了極大不便。因為文檔不同部分升級的進度不可能強求一致。

於是,CSS工作組決定從CSS2.1之後開始採取模組化的路線。就是把需要升級的內容獨立成模組拆分出來,新增的需求也以新模組的方式立項。從此以後,CSS就進入了Level 3。


引入模組化之後


CSS採取模組化路線後,就有了三種模組,而且它們的命名方式非常值得注意。

  • CSS Level 2 原有模組:Selector、Color、Values and Units、BackgroundS and Borders等這些都是從原來 CSS 規範中拆出來的模組。這些模組的命名一開始就會從Level 3 開始,比如Selectors Level 3(https://www.w3.org/TR/css3-selectors/)、CSS Backgrounds and Borders Level 3(https://www.w3.org/TR/css3-background/),因為它們都是在 CSS Level 2 的基礎之上開始的。
  • 新模組:Multi-column Layout、Transitions、Flexible Box、Transforms 等都是後來新增的模組,以前 CSS 中不存在此特性。因此它們的命名會從 Level 1 開始,比如CSS Transitions Level 1(https://www.w3.org/TR/css3-transitions/)、CSS Flexible Box Module Level 1(https://www.w3.org/TR/css-flexbox-1/)。
  • 當然,還有 CSS2.1 從 CSS2 中刪除的內容。如前所述,“被 CSS2.1 刪除的 CSS2 中的內容,被視為回退到 CR 階段”,而其中大部分內容都會以 CSS Level 3 的面目“轉世”,一旦它們進入 CR 階段,就會取代之前對應的內容成為新標準。
  • OK,上述任何模組的規範從 WD 推進到 REC 階段,要麼意味著新 CSS 模組誕生,要麼意味著舊 CSS 模組重新煥發了生機!

希望下面這張圖能更直觀地說明CSS模組的命名:




模組還會有Level 4或更高


CSS 到 Level 3 因為採取了 “模組化” 策略,本身不會再進化到 Level 4 了。正因為如此,CSS 理論上永遠不會出現 CSS4。但是,CSS 中的某個模組是可以到 Level 4 甚至更高級別的。比如,CSS Color Module就開始 Level 4 的升級之旅了(https://www.w3.org/TR/css-color-4/)。

CSS snapshot 2017 中是這麼說的(https://www.w3.org/TR/CSS/#css-levels):

There is no CSS Level 4. Independent modules can reach level 4 or beyond, but CSS the language no longer has levels. (“CSS Level 3” as a term is used only to differentiate it from the previous monolithic versions.)

沒有 CSS Level 4。獨立的模塊可以到 Level 4 或更高級別,但 CSS 這門語言不會再有這個級別。(“CSS Level 3”作為一個概念,只是便於跟之前大而全的版本有所區別。)


以下是參考鏈接




Share:

0 意見: