css 選擇器效能的取捨。和大量標籤帶有都是class
轉載自:https://segmentfault.com/q/1010000003749652
近期剛好在整理選擇器效能相關的知識點,內容如下:
選擇器效率從高到低的排序列表:
id選擇器(#id)
類選擇器(.className)
標籤選擇器(div,h1,p)
相鄰選擇器(h1+p)
子選擇器(ul > li)
後代選擇器(li a)
萬用字元選擇器(*)
屬性選擇器(a[rel="external"])
偽類選擇器(a:hover,li:nth-child)
決定選擇器效能的幾個點:
首先選擇器對效能的影響源於瀏覽器匹配選擇器和文件元素時所消耗的時間,所以優化選擇器的原則是應儘量避免使用消耗更多匹配時間的選擇器。
但是想用更快的選擇器之前,還要了解選擇器的匹配機制,事實上,瀏覽器讀取選擇器時,不是按照我們的閱讀習慣從左到右,而是遵循的從選擇器的右邊到左邊進行讀取的。
那麼最右側的選擇器對於效能就起著關鍵性的作用,它是最先開始查詢的,如果最右側是#id選擇器那麼效能就很高,如果是標籤選擇器那麼效能就會大打折扣。
最後回答你的問題:
1、class和id選擇器效能最好,其他選擇器我看網上說建議不要用
雖然id選擇器的效能最好,但是因為一個頁面內不能出現相同的ID,所以也不可常用。那麼最常用的應該就是class類選擇器,但是遇到li、td、dd等經常大量連續出現的元素,應該採用class類選擇器結合後代選擇器進行選擇,如.nav > li,而不是在每一個元素上引用class類。
2、那麼這樣的話html文件就會有大量的帶有class標籤了
頁面中出現大量的class類是最麻煩的,不僅難以維護,而且複用性是最差的,最頭疼的還時常因為選擇器優先順序問題導致定義的屬性值失效,所以這種做法沒有任何意義,既沒有提高效能,也會造成很多麻煩。
3、對於大量的帶有class標籤 和 選擇器效能比起來。怎麼取捨呢?大量class標籤會也會影響效能嗎?
不要太在乎選擇器效能,請根據上述的選擇器效能優化的方向,大膽靈活運用所有的選擇器,多瞭解CSS的特性,慢慢你的CSS程式碼就不會被這些問題所困擾了。
相關文章
- css標籤選擇器的使用注意CSS
- day42:HTML標籤和CSS選擇器HTMLCSS
- CSS ID選擇器與CLASS選擇器CSS
- CSS class 類選擇器CSS
- redis持久化的取捨和選擇Redis持久化
- Redis RDB和AOF取捨和選擇Redis
- jQuery選擇器 標籤選擇元素+css簡單新增移除操作jQueryCSS
- Kubernetes – 標籤和選擇器
- K8S標籤與標籤選擇器K8S
- JQ選擇器(標籤)學習
- CSS 選擇器 - 帶例項CSS
- css選擇器,帶例項CSS
- CSS 選擇器效能優化CSS優化
- 002---選擇器(標籤選擇器、類選擇器、id選擇器、偽類選擇器、萬用字元選擇器)字元
- jQuery .class選擇器jQuery
- 【爬坑日記】.class.class選擇器的選擇問題
- CSS樣式中的後代選擇器和子代選擇器CSS
- CSS樣式中的通用選擇器和偽類選擇器CSS
- CSS的選擇器CSS
- js如何對標籤有選擇性的禁用滑鼠右鍵JS
- CSS 選擇器CSS
- CSS選擇器CSS
- Laravel + Vue 製作一款標籤選擇器LaravelVue
- 直播軟體搭建,LabelList標籤選擇器
- jQuery基礎學習(1)(標籤選擇器,事件)jQuery事件
- 【CSS】【3】CSS選擇器CSS
- CSS系列:CSS選擇器CSS
- css的基本選擇器CSS
- CSS選擇器(5)——屬性選擇器CSS
- 基本CSS選擇器,複合選擇器,後代選擇器CSS
- css選擇器有哪幾種型別CSS型別
- 一個帶有權重的隨機選擇器隨機
- 【Flutter 專題】97 仿網易新聞標籤選擇器Flutter
- CSS-選擇器6-兄弟選擇器CSS
- CSS :required 選擇器CSSUI
- CSS :optional 選擇器CSS
- css選擇器概述CSS
- CSS選擇器(一)CSS