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工程師,翻譯都是由口碑前端團隊完成的。

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