CSS 標準發佈流程

隨着 CSS 3 的普遍應用,不少新的 CSS 屬性層出不窮,有不少陌生的 CSS 屬性出現,因此常常須要去學習新的 CSS 屬性。新的屬性每每介紹文章很少,因此有時候就須要去看看官方文檔,此時會發現官方文檔有好幾個版本,看下圖:css

 

當初學 flex-box 的時候就發現有好多種寫法,還好官方文檔開頭有標明那些文檔時最新的。不過此時我萌生了去了解 CSS 標準流程的想法,我想做爲一個合格的 CSSER 也應該去了解吧。這裏講到的知識基原本自 CSS-tricks 上 CHRIS COYIER 的一篇文章:https://css-tricks.com/css-standards-process/ 。html

CSS 的標準化流程由 W3C Cascading Style Sheets Working Group (CSSWG)——W3C層疊樣式列表小組,由瀏覽器商,大學,大公司(google,IBM等),以及獨立CSS專家組成。W3C 自己並不制定標準,而是做爲一個論壇式的平臺,接收來自小組成員的提交,並經過會議來商討制定標準,全部的提交以及討論都是公開透明的,能夠在 W3C 網站上看到會議的記錄,標準肯定通常有6個階段,其中兩個是過渡階段:css3

1. 編輯草案 Editor's Draft (ED)git

這個是規範的開始階段,一個CSS屬性或者選擇器被提出來,並在CSSWG內部研究。若是小組成員贊成這個屬性能夠正式推出,它就能進入下一階段。github

 

二、工做草案 Working Draft (WD)web

編輯草案後是工做草案,標準的設計階段。小組反覆處理來自 CSSWG 內部和來自小組外部的反饋,這個階段有兩個結果:一是可能會由於技術困難或者可能會引發其餘問題而使新屬性被徹底拒絕;二是規範會經過這個階段,並會做爲第一次公開工做草案( First Public Working Draft (FPWD))發佈,後面還會有數個工做草案,會處理來自 CSSWG 內部和小組外部更普遍社會的反饋。瀏覽器

 

三、過渡-最後通告工做草案 Transition – Last Call Working Draft (LCWD)學習

這是第一個過渡階段,當規範開始考慮從工做草案進入到下一個階段時,將會對新屬性的一些小改動的反饋設置一個截止日期,LCWD 便是日期截至後最後的一次公開草案處理。測試

注:最重要的階段是 ED, WD, and CR(下面會講到的),其餘階段不是很重要。flex

 

4. 候選推薦標準 Candidate Recommendation (CR)

規範會在這個階段經過完整的測試,測試人員來自 CSSWG 以及被選爲實現這個規範的瀏覽器生產商(Chrome, Safari, Firefox, Opera, 等等)。爲了繼續進入下一階段,CSSWG 會推出兩個正確的實現規範。

 

5. 過渡-建議推薦標準 Transition – Proposed Recommendations (PR)

當到達這個階段,W3C全球資源小組:W3C諮詢委員會(W3C Advisory Committee),決定這個規範是否會繼續進入下一個階段。這個階段通常不多有異議出現,因此也是一個過渡階段而已。

 

6.推薦標準 Recommendation (REC)

若是規範到達這個階段,說明規範已經考慮完備並可讓瀏覽器商實現,W3C 和 CSSWG 對這個規範的討論處理再也不活躍,只作一些必要的維護。

注:推薦標準階段其實不是一個理想的狀態,而是一個規範的墳墓,瀏覽器並不會等到這個階段纔去實現它,而是在 CR 階段就會實現這個規範。爲何說是墳墓呢,由於到達 REC 階段後,規範會止步不前,而不是變得穩定。由於在 REC 階段 CSSWG 並不會投入精力去修復新出現的錯誤,因此錯誤會不斷積累,而新版本的規範已經在開發了,老的規範已經失去了繼續發展的活力以及意義,留下的問題就只能經過 hack 去彌補,同時會有新的屬性去代替它實現更好的功能。

 

那何時規範纔是穩定的呢?文章中有引述了 Tab Atkins Jr (google團隊成員,也是 CSSWG 以及 W3C 的成員)的一段話,內容大概是:規範的穩定性基本和它所在的流程階段沒有關係。當規範特性已經開始傳播開來,並由於向後兼容性不能改變時,它纔是穩定的,這個階段可能會在 ED 規範階段或者 CR 階段,這纔是穩定性評判的正確方法,而不是 W3C 的標準發佈流程。說到這裏,做者也提到了怎樣根據 CSS 新屬性的穩定性狀況去使用它,避免跳坑,其實就是可以實現漸進加強與優雅降級。這裏不得不提到一個有名的網站 http://caniuse.com 估計這個網站大多數人都會用到了,簡直是 CSSER 的福音啊,經過這個網站,當鍵入某個屬性時,能夠在下面的resources標籤很快速地找到它的官方文檔以及不少最新的學習文章,同時瞭解到到一些現有的使用問題(issues)。舉個例子,好比鍵入flex時,下面有這樣的標籤:

裏面有來自css-trick、github等著名網站的文章,不少都是比較新,而且寫得很好的文章。 

 

這裏還有個小常識,就是關於 CSS 3 的這個命名,Tab Atkins Jr 在文章 A Word About CSS4 表明 CSSWG 作了闡述,主要內容就是 CSS 3 表明了 CSS 2.1 後新增的 CSS屬性,並且不會有 CSS4 這樣的東西出現。下面是我看完後結合文章內容以及本身的一些理解,不想看原文的能夠稍微瞭解一下。可能理解不是很到位,不過應該不會偏頗太多:CSSWG 想結束 CSS 2.1 這個版本時,發現 「versions」(版本)這個東西很差用,由於一旦使用版原本發佈 CSS 時,CSS 變得很難維護,發展也會變慢。結合上面 CSS 的標準發佈流程以及如今 CSS 的使用狀況,不難想到確實是這樣。由於 CSS 的總體性不強,CSS 屬性都是爲了實現某個效果單獨被提出並反饋,和其餘提出的屬性並無什麼交集;有的屬性一直在用不須要什麼新的更新,而有的屬性可能很快要被淘汰,因此以一整個版本去發佈 CSS 很不科學。基於這樣的想法,CSSWG 決定把 CSS 分紅不少獨立的小模塊,每一個模塊只包含一個主要的特性(feature),能夠本身單獨升級開發,爲何要分紅小的只包含少數特性的模塊呢?這樣就不會由於一個模塊包含太多特性,而後由於某個特性特別棘手很差解決而阻礙整個模塊其餘特性的發展升級。由於這個想法是在結束 CSS 2.1 版本的時候決定的,那麼如今 CSS 就要以模塊來整理一下,也要相應定一些等級(level)。規則是這樣的: 

一、若是模塊在 CSS 2.1 就有相關的內容,那麼這些模塊就從 level 3 開始。

二、若是是徹底新的屬性(好比 Flexbox),就直接從 level 1 開始。

三、一個模塊的級別和它所在 CSS 的版本無關,即無論它是 CSS 2.1 的內容仍是徹底新的屬性。由於模塊的概念是新提出來的,因此只要是模塊,就都屬於 CSS 3(或者也能夠說都是 CSS),無論它們處於什麼模塊等級。

四、可能會看到相似 css4-backgrounds 這樣的寫法,其實表明的是 CSS Background & Borders Level 4,即4表示的是模塊的等級。

 

後來發現大漠前輩也寫了相關文章,內容更全面,講到了瀏覽器前綴的問題。我也參考了一下,你們能夠點下面的參考連接去看看。

 


本文來源:JuFoFu

本文地址:http://www.cnblogs.com/JuFoFu/p/5140302.html

 

本文參考:

Tab Atkins Jr.  http://www.xanthir.com/b4Ko0#nav

CHRIS COYIER . https://css-tricks.com/css-standards-process/

大漠 . CSS祕密花園:Web 標準是友是敵?​

 

 水平有限,錯誤歡迎指正。原創博文,轉載請註明出處。

相關文章
相關標籤/搜索