最近在high performance web sites blog看到一篇關(guān)于css選擇器的文章《simplifying css selectors》,我英文太差,在翻譯軟件和朋友的幫助下稍微的看懂了一些,看本文需要謹(jǐn)慎,謹(jǐn)防被我誤導(dǎo),如果你英文強(qiáng),能翻譯作者原文那就更好了,大家都會(huì)感謝你的;
看懂的整理了如下幾點(diǎn):
1.作者先前的文章里說(shuō):不用去優(yōu)化css選擇器,因?yàn)閮?yōu)化css選擇器對(duì)網(wǎng)友的性能提升很小,不值得去計(jì)較;這個(gè)觀點(diǎn)似乎有點(diǎn)不對(duì),作者收到了很多批評(píng)的反饋;
2.david hyatt的文章《writing efficient css for use in the mozilla ui》中提到的一條css渲染規(guī)則是:在一條css中,css選擇器是從最右邊開始之后依次向左移動(dòng)的,直到它不匹配css規(guī)則或匹配錯(cuò)誤;所以我們的工作重點(diǎn)應(yīng)該放在最右側(cè)的css選擇器來(lái)匹配大量的頁(yè)面的元素。
比如這樣一個(gè)css選擇器:div div div p a.class0007 {}
這個(gè)選擇器有5層,貌似很負(fù)責(zé)的,但是最右邊的選擇器是a.class0007,在頁(yè)面中只有一個(gè)匹配的元素逆向匹配(.class0007);
所以這樣的選擇器不用擔(dān)心他的性能;
3.當(dāng)然還有一些性能不好的css選擇器:
a.class0007 * {}
a.class0007 div {}
#id0007 > a {}
.class0007 [href] {}
div:first-child {}
這些性能不好的css選擇器主要是因?yàn)樵谧钣疫叺倪x擇器可以匹配的元素很多,從而降低了頁(yè)面的性能。
新聞熱點(diǎn)
疑難解答
圖片精選