天天看點

Web開發之CSS

  web開發,除了背景開發和資料開發,很大一塊是前端開發。前端開發中使用最大的技

術是:html(現在也有項目開始使用html5了,比如滬江英語的聽力曲線使用html5

canvas繪制的),css(這個也有一個新版本,css3.0。很多應用出現圓角效果,估計都使用到了3.0的新特性),javascript(其實

這個也有版本的哦!盛大的權一大師就在研究ecmascript5了),一個javascript架構,比如說jquery,dojo,yui等等。

  主要講解css性能調優,内容涉及一下幾個方面。

1.style标簽的調優

2.特殊css樣式的使用

3.css的縮寫

4.css的聲明(省略)

5.css的選擇器

第一點:

stylesheets檔案放在html頁面的頭部,把javascript檔案放在頁面的底部。這也是《高性能網站開發》中的建議方法。對于

@import 和 <link> 兩種加載外部 css 檔案的方式:@import 就相當于是把 <link>

标簽放在頁面的底部,是以從優化性能的角度看,應該盡量避免使用 @import 指令。

第二點:

避免是有某一特定浏覽器的技術的。比如ie支援的css expression和alphaimageloader filter。

第三點:

css的縮寫。原來把

#ffffff寫成#fff也是可以減小代碼量,提高性能的呀!在項目中pm經常會指導我們,把font-style: italic;

font-variant: small-caps; font-weight: bold; font-size: 1em;

line-height: 140%; font-family: sans-serif; 寫成一行,font: italic small-caps

bold 1em 140%

sans-serief。不過這個對于熟練的工程師來說還好,但是對于初學者來說,這樣的樣式不夠清晰易懂。因為我沒有分析過浏覽器解析和渲染樣式的原

理,寫成一句是否真的有利于各個浏覽器提供性能。我還是不敢肯定。

第四點:

css選擇器。周祥老師給出了這個例子,讓我大吃一驚。

示例一:child selector

#toc

> li {font-weight: bold} ,他說:浏覽器是“從右往左”來分析 class

的,它的比對規則是從右向左來進行比對的。這裡,浏覽器首先會查找頁面上所有的“li”節點,然後再去做進一步的判斷:如果它的父節點的 id

為“toc”,則比對成功。ps:不過我們項目基本不用這個樣式,因為ie6不支援子代選擇器。不過他在後面列舉

示例二:descendant selector

li {font-weight: bold} ,這個效率比之前的“child

selector”效率更慢,而且要慢很多。浏覽器先便利所有的“li”節點,然後步步上溯其父節點,直到 dom

結構的根節點(document),如果有某個節點的 id

為“toc”,則比對成功,否則繼續查找下一個“li”節點。不是吧!這個樣式在我們開發的web項目中用到的特别多呀!不過我們現在也逐漸習慣一級一級

的定位元素,減少浏覽器在dom結果查找的節點的時間。

如果一個标簽有id,直接使用id seletor,比如 <div

id="footer"></div>,不要寫

div#footer,查找效率很低。但是關于class選擇器,我倒是覺得可以使用tag和class同時定位,有時需要這樣的需要。

treehead treerow treecell {...} ----->> treehead > treerow > treecell {...}

descendant 選擇器是耗時相對高的選擇器,通常來講,它在 css 裡的使用應該是盡量避免的,如果能用 child 選擇器替代就應該盡量這樣去做。還是那個原因,ie6不支援,是以不使用這個。

同時推薦2本淘寶工程師翻譯的書,确實不錯。目前看完第一本,正在看第二本。作者是前google web工程師,翻譯都是由口碑前端團隊完成的。

Web開發之CSS
Web開發之CSS

ps:就因為我在這裡放置了2個卓越連結,居然移出首頁。

繼續閱讀