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
- Kubernetes – 標籤和選擇器
- CSS class 類選擇器CSS
- css中class和id選擇器有什麼區別?CSS
- redis持久化的取捨和選擇Redis持久化
- Redis RDB和AOF取捨和選擇Redis
- K8S標籤與標籤選擇器K8S
- css選擇器,帶例項CSS
- CSS 選擇器 - 帶例項CSS
- CSS 選擇器效能優化CSS優化
- 002---選擇器(標籤選擇器、類選擇器、id選擇器、偽類選擇器、萬用字元選擇器)字元
- 【爬坑日記】.class.class選擇器的選擇問題
- 直播軟體搭建,LabelList標籤選擇器
- k8s~關於非常囉嗦的標籤和選擇器K8S
- CSS選擇器CSS
- Laravel + Vue 製作一款標籤選擇器LaravelVue
- css選擇器有哪幾種型別CSS型別
- css選擇器權重和超越`!important`CSSImport
- css中:not()選擇器和jQuery中.not()方法CSSjQuery
- CSS選擇器(一)CSS
- CSS常用選擇器CSS
- CSS 元素選擇器CSS
- CSS :valid 選擇器CSS
- CSS :required 選擇器CSSUI
- CSS :optional 選擇器CSS
- css選擇器概述CSS
- CSS id選擇器CSS
- CSS的引入與選擇器CSS
- css選擇器的分類CSS
- 通過css類/選擇器選取元素文件結構和遍歷元素樹的文件CSS
- 假設最後一個css元素是html標籤,則選擇器解析從左往右的提案CSSHTML
- 一個帶有權重的隨機選擇器隨機
- 15 分鐘帶你感受 CSS :has() 選擇器的強大CSS
- CSS3選擇器02—CSS3部分選擇器CSSS3
- 【Flutter 專題】97 仿網易新聞標籤選擇器Flutter
- CSS 偽類選擇器CSS
- CSS 常見選擇器CSS