最近在High Performance Web Sites blog看到一篇關於CSS選擇器的文章《Simplifying CSS Selectors》,我英文太差,在翻譯軟件和朋友的幫助下稍微的看懂了一些,看本文需要謹慎,謹防被我誤導,如果你英文強,能翻譯作者原文那就更好了,大家都會感謝你的;
看懂的整理了如下幾點:
1.作者先前的文章裡說:不用去優化CSS選擇器,因為優化CSS選擇器對網友的性能提升很小,不值得去計較;這個觀點似乎有點不對,作者收到了很多批評的反饋;
2.David Hyatt的文章《Writing EfficIEnt CSS for use in the Mozilla UI》中提到的一條CSS渲染規則是:在一條css中,css選擇器是從最右邊開始之後依次向左移動的,直到它不匹配CSS規則或匹配錯誤;所以我們的工作重點應該放在最右側的CSS選擇器來匹配大量的頁面的元素。
比如這樣一個CSS選擇器:div div div p a.class0007 {}
這個選擇器有5層,貌似很負責的,但是最右邊的選擇器是A.class0007,在頁面中只有一個匹配的元素逆向匹配(.class0007);
所以這樣的選擇器不用擔心他的性能;
3.當然還有一些性能不好的CSS選擇器:
A.class0007 * {}
A.class0007 DIV {}
#id0007 > A {}
.class0007 [href] {}
DIV:first-child {}
這些性能不好的CSS選擇器主要是因為在最右邊的選擇器可以匹配的元素很多,從而降低了頁面的性能。