CSS 二十年發展簡史
作者 | 夏之安然
責編 | 伍杏玲
出品 | CSDN(ID:CSDNnews)
打開今日頭條,查看更多圖片在2019年的今天,我們能在網上看到炫酷的動畫載入,精彩絕倫的交互效果,以及從 PC 端到移動端的響應式交互,大家覺得習以為常。可你不知道的是,在 20 多年前,網頁僅僅提供了文檔展示能力,沒有裝飾的它就像一張黑白報紙那樣簡陋。
你是否會問:網頁是如何變成像今天這樣精美的?
這就歸功於 CSS 了。
CSS 的誕生
20 世紀 90 年代蒂姆·伯納斯·李(Tim Berners-Lee)發明萬維網,創造 HTML 超文本標記語言。此後網頁樣式便以各種形式存在,不同的瀏覽器有自己的樣式語言來控制頁面的效果,因為最原始的 Web 版本中根本沒有提供一種網頁裝飾的方法。
ViolaWWW瀏覽器中的網頁
在HTML迅猛發展的 90 年代,不同的瀏覽器根據自身的 HTML 語法結構來支持實現不同的樣式語言。在最初的 HTML 版本中,由於只含有很少的顯示屬性,所以用戶可以自己決定顯示頁面的方式。
但隨著 HTML 的發展,HTML 增加了很多功能,代碼也越來越臃腫,HTML 就變得越來越亂。網頁也失去了語義化,維護代碼很艱難,因為代碼很混亂:
於是裝飾網頁樣式的 CSS(層疊樣式表,Cascading Style Sheets)誕生了。
語法的確定
早期 CSS 的語法設計看上去類似後來的 JavaScript 語法(當時 JavaScript 尚未存在),實際上,CSS 的這個寫法借鑒了 X11 Window System 中的 X 資源。
早期CSS語法提案
在第一稿建議中,有一個影響百分比的說明符:h1.font.size = 20pt 80%。
行尾百分比的作用是想要通過這個百分比來控制該值的權重,如字型大小設置為 20pt,權重設置 80%,最終將字型大小值與權重組合在一起,值為 16pt。
這個寫法的設計初衷是想將開發者與用戶的要求與偏好組合到一起,CSS 之父哈肯·維姆·萊(H?kon Wium Lie) 提議 CSS 應該有一把滑尺,這樣開發者與用戶都有完全的控制力。當時這個提議引起了大家的討論,但由於這個辦法對如 font-size 等屬性管用,但對另一些屬性如 font-family 就不好用了,所以最終這個百分比的用法還是被捨棄了。
至於 CSS 的語法由 font.size 改成font-size,是怎麼設計來的呢?首先,連字元讀起來更像書面英語,簡單易懂。其次,DSSSL(Document Style Semanticsand Specification Language,文檔樣式語義和規範語言) 和 DSSSL-Lite就使用這種連字元屬性名。於是,CSS 也從中借鑒了連字元。
經過多年的努力 ,到1996年底,最終CSS語法變成了現在這個樣子:
當前CSS語法
CSS 歷史大事記
1994 年,H?kon Wium Lie 最初提出了 CSS 的想法,聯合當時正在設計 Argo 的瀏覽器的Bert Bos,他們決定一起合作設計 CSS,於是創造了 CSS 的最初版本。
緊接著,他們在芝加哥的Mosaic and the Web 大會上第一次正式提出了 CSS 的建議,1995 年他們一起再次展示了這個建議。當時 W3C 剛剛建立,W3C 對 CSS 很感興趣,為此專門組織了一次討論會。
1996 年 12 月,W3C 推出了 CSS 規範的第一版本。
1997 年,W3C 頒布 CSS1.0 版本 ,CSS1.0 較全面地規定了文檔的顯示樣式,可分為選擇器、樣式屬性、偽類 / 對象幾個部分。
這一規範立即引起了各方的關注,隨即微軟和網景公司的瀏覽器均能支持 CSS1.0,這為 CSS 的發展奠定了基礎。
1998 年,W3C 發布了 CSS 的第二個版本,目前的主流瀏覽器都採用這標準。
CSS2 的規範是基於 CSS1 設計的,包含了 CSS1 所有的功能,並擴充和改進了很多更加強大的屬性。包括選擇器、位置模型、布局、表格樣式、媒體類型、偽類、游標樣式。
2005 年 12 月,W3C 開始 CSS3 標準的制定,到目前為止該標準還沒有最終定稿。
IE6,前端工程師的痛
2001 年,微軟發布了 IE6,在 Windows 普及的年代 IE6 瀏覽器佔據了高達 80% 的市場,這對 CSS 的標準推廣起著重要作用。
因為 IE6 的用戶量大,開發者們就選擇了以大眾為準,許多開發者竭盡全力把 IE6 下的頁面做好,甚至一些開發者的口號很響「Only IE6」。
這樣導致許多頁面根本不是 W3C 標準,因為 IE6 有一套自己的解析渲染體系。最終 IE6 的龐大市場最終成為了 Web 開發者的一大絆腳石。
作為當時的開發者,必須掌握的一系列瀏覽器 Hacks,網頁開發和面試必備。印象中當時經典的 Bug是「江湖匪號:一隻豬的故事」。
IE6 Hacks和解決方案(圖片來自飄零霧雨 CSS 參考手冊)
如今我們在當下高級瀏覽器中實現一個圓角按鈕是很簡單的事,但在當時不支持 CSS3 屬性的瀏覽器(IE6/7/8)中還得通過圖片背景切圖方法實現,如果按鈕的長度不確定的話,還得實現按鈕自適應長度,這也是考驗前端工程師的 CSS 使用技巧和磨練我們的耐性。
那些年我們前端工程師的收藏夾不僅收藏 CSS Hacks,還會收藏各種布局攻略,如聖杯布局,也叫雙飛翼布局,就是實現一個兩側寬度固定,中間寬度自適應的三欄布局,實現這些布局需要各種技巧和攻略。當時大牛們總結出的一些要點:
兩側寬度固定,中間寬度自適應
中間部分在 DOM 結構上優先,以便先行渲染
允許三列中的任意一列成為最高列
只需要使用一個額外的 <div> 標籤
就這樣,我們前端開發者練就了一身黑技能,直到微軟發布 IE6 死亡倒計時。最先開始放棄 IE6 支持的是一線互聯網大公司,如淘寶等,直到 2014 後,大家逐漸放棄了對 IE6 的支持,這簡直是對前端工程師最大的福音。
隨著 IE6 退出市場,2014年,微軟發布 IE10 版本。
2016年,Chrome 瀏覽器佔據全球瀏覽器排行榜首位。隨著 Hybrid、React Native 等技術的興起,互聯網進入移動端時代,前端工程師開始新的挑戰,忙碌於適配各種端。
我回首自己做前端開發的這十年來,記得印象最深刻是,電腦中安裝的瀏覽器軟體是最多的,IE家族、遨遊、QQ、360、Chrome 瀏覽器等。
我一般寫完一個項目後,自己先在所有瀏覽器跑一遍 CSS 的兼容性測試,直到所有瀏覽器沒有大問題才能進行項目提測發布。也正是有這樣的嚴謹的工作態度,使我在工作中也在不斷進步。有時候,回過頭想想有過這樣的經歷也是一種技術財富的積累。
結語
CSS 經歷了 20 多年的發展,從 PC 端到移動端,在前端工程化不斷進步的今天,隨著CSS的規範不斷的完善升級,前端業務複雜度越來越高,帶來的工程也越來越龐大,我們前端開發者對 CSS 工程化的方案也不斷地探索。
現在一大批 CSS 預處理和後處理工具湧現,比較流行的 CSS 預處理器有 Sass、Less,CSS 後處理器諸如 clean-css、AutoPrefixer、Rework、PostCSS 等。
那麼關於 CSS 將來發展會怎麼樣?未來 CSS 還能不能勝任自己的角色,會不會有新的模型代替它?對於這些問題,H?kon Wium Lie 認為 CSS 目前還能夠勝任,還沒有看到能夠取代它的新模型出現,新的技術肯定會層出不窮,但應該是對 CSS 的擴展而不是代替。他還表示,我們今天寫的 CSS 代碼,500 年後的計算機仍然能看懂。
參考資料:
CSS 發展歷史及新特性
CSS 模塊和標準化進程
A Look Back at the History of CSS
CSS: It was twenty years ago today — an interview with H?kon Wium Lie
作者簡介:夏之安然,目前就職於國內領先旅遊行業互聯網公司,十年前端開發老兵。對中後台管理系統有深入研究,在團隊主導多個管理系統架構設計,並且研發多款效率工具。
※百年 IBM 如何用代碼拯救生命
※史上第一代圖形瀏覽器往事
TAG:CSDN |