總結了部分所學、所聽、所看、所問的一些CSS寫作經(jīng)驗,書寫高效的CSS?-?漫談CSS的渲染效率,它們與渲染效率及所占用消耗的資源有一定的關
聯(lián)。部分為自己理解所寫,不排除會有錯漏,歡迎提供更好的意見。
1、十六進制的顏色值對位數(shù)與大小寫
編寫十六進制顏色值時你可能會用小寫字母或省略成3位數(shù),關于這寫法沒找到確實的數(shù)據(jù)證明對瀏覽器的渲染效率是否有影響,但十六進制的顏色值默認標準是
大寫及6位數(shù)標注。在未知情況下不希望冒險而降低了渲染的效率。
*?不贊成?-?color:#f3a;
*?建議
用?-?color:#FF33AA;
2、display與visibility的差異
他們用于設置或檢索是否顯示對象。display隱藏對象不保留物理空間,visibility為隱藏對象保留占據(jù)的物理空間。當瀏覽器渲染被占據(jù)的物
理空間時,會有所消耗資源。
*?不贊成?-?visibility:hidden;
*?建議用?-?display:none;
3、
border:none;與border:0;的區(qū)別
和display與visibility的關系類似,分別不
保留與保留空間。更多的是border:0;盡管可以隱藏掉邊框,但它會為你保留border-color/border-style的使用權。
*?不贊成?-?border:0;
*?建議用?-?border:none;
4、不宜過小的背景圖片平
鋪
一張寬高1px的背景圖片,雖然文件體積非常之小,但渲染寬高500px的板塊需要重復平鋪2500次。提高背
景圖片渲染效率跟圖片尺寸及體積有關,最大的圖片文件體積保持約70KB。
*?不贊成?-?寬高8px以下的平鋪背景圖片
*?建
議用?-?衡量適中體積及尺寸的背景圖片
5、IE的濾鏡
IE的濾鏡除了比較消耗
資源外也有兼容性問題。當中有令PNG透明的濾鏡,可采用GIF或JPG似透非透的辦法來避免使用此濾鏡。建議只在IE6應用GIF透明,因為IE7以上
已經(jīng)支持了PNG透明。
*?不贊成,濫用IE濾鏡因為消耗資源外也有兼容性問題。
*?建議用,最好選擇其它方法能避免使用濾鏡。
6、*
{?margin:0;?padding:0;}避免瀏覽器樣式差異
*號通配符把所有標簽都初始化一遍,瀏覽器的
渲染消耗一定的資源。有部分在標簽在不同瀏覽器上幾乎無差異,或是某些已經(jīng)不推薦使用的標簽(因為你不會去用它),它們不需通配符要重新初始化一遍這樣做
能節(jié)省一點資源。
*?不贊成,使用*號通配符
*?不贊成,div?span?button?b?table等標簽納入通配符控制
內(nèi)外填充樣式
*?建議用,有選擇性地使用通配符控制內(nèi)外填充樣式。
7、不要添加額外的標簽來描述class
或id
如果你有一個選擇器是以id作為關鍵選擇符,請不要添加多余標簽名上去。因為ID是唯一的,你不要為了一個
不存在的理由而降低了匹配的效率。
*?不贊成?-?button#backButton?{?}
*?不贊成?-?.menu-
left?#newMenuIcon?{?}
*?建議用?-?#backButton?{?}
*?建議
用?-?#newMenuIcon?{?}
8、盡量選擇最特殊的類來存放選擇器
降低系統(tǒng)效率的一個最大原因是我們在標簽類中用了過多的選擇符。通過添加?class?到元素,我們可以將類別進行再細分為?class?類,這樣就不用
為了一個標簽浪費時間去匹配過多的選擇符了。
*?不贊成?-?treeitem[mailfolder="true"]?&
gt;?treerow?>?treecell?{?}
*?建議用?-?.treecell-mailfolder?{?}
9、
避免子孫選擇符
子孫選擇符是CSS中最耗資源的選擇符。他真的是非常的耗資源,尤其是在選擇器使用標簽類或通用類
的時候。很多情況中,我們真正想要的是子選擇符。除非有明確說明,在?UI?CSS?中是嚴禁使用子孫選擇符的。
*?不贊
成?-?treehead?treerow?treecell?{?}
*?好一點,但還是不行(參照下一
條)?-?treehead?>?treerow?>?treecell?{?}
10、標簽類中不要包含子
選擇符
不要在標簽類中使用子選擇符。否則,每次元素的出現(xiàn),都會額外地增加匹配時間。(特別是當選擇器似乎多半會
被匹配的情況下)
*?不贊成?-?treehead?>?treerow?>?treecell?{?}
*?建議
用?-?.treecell-header?{?}
11、留意所有子選擇符的使用
小心地使用子選擇符。如果你能想出一個的不使用他的方法,那么就不要使用。特別是在?RDF?樹和菜單會頻繁地使用子選擇符,像這樣。
*?不贊成?-?treeitem[IsImapServer="true"]?>?treerow?>?.tree-
folderpane-icon?{?}
請記住?RDF?的屬性是可以在模板中被復制的!利用這一點,我們可以復制那些想基于該屬性
改變的子?XUL?元素上的?RDF?屬性。
*?建議用?-?.tree-folderpane-
icon[IsImapServer="true"]?{?}
已有 1 人發(fā)表留言,猛擊->>這里<<-參與討論
JavaEye推薦
- 上海:天會皓聞誠聘資深Java架構師
- 上海:天會皓聞誠聘CTO技術總監(jiān)
- 成都:月薪5千到1萬招聘Java開發(fā)工程師
- 北京:手機之家網(wǎng)站誠聘PHP程序員
- 上海:高薪誠聘Python開發(fā)人員
文章來源:http://justjavac.javaeye.com/blog/651097