css選擇器的渲染機制
阿新 • • 發佈:2018-12-26
css樣式表,對每條規則是按照從右到左匹配的。
示例1:
*{ }
*萬用字元 將匹配所有的元素,瀏覽器進行渲染的時候需要計算每一個元素,效率最低。
示例2:
ul#nav{ }
在頁面中每個指定的id 只能對應一個元素,沒必要額外新增限定符,加了反而效率低。同事也不要用具體的標籤限定類選擇器,而是對類名進行擴充套件。例如把ul.nav改成.main_nav更好。
示例3:
#ul li{
color:#e5e5e5;
}
瞭解這方面的知識後,我們知道這個之前看似高效地規則實際開銷相當高,瀏覽器必須遍歷頁面上每個li元素並確定其父元素的id是否為nav。
小結:
- 避免使用通配規則。如 *{} 計算次數驚人!只對需要用到的元素進行選擇
- 儘量少的去對標籤進行選擇,而是用class。如:#nav li{},可以為li加上nav_item的類名,如下選擇.nav_item{}
- 不要去用標籤限定ID或者類選擇符。如:ul#nav,應該簡化為#nav
- 儘量少的去使用後代選擇器,降低選擇器的權重值。後代選擇器的開銷是最高的,儘量將選擇器的深度降到最低,最高不要超過三層,更多的使用類來關聯每一個標籤元素。
- 考慮繼承。瞭解哪些屬性是可以通過繼承而來的,然後避免對這些屬性重複指定規則