Date: 7th of Aug, 2015ide
Author: HaoyCn測試
本文收集網上各處關於CSS選擇器的文章總結,並本身概括一篇。優化
在上面的選擇器中,此外,經測試ui
屬性選擇器 = 僞類選擇器(應用最後一個)code
:last-child{color:red;} [desc]{color:green;}
僞類選擇器 > 相鄰選擇器繼承
:last-child{color:green;} p ~ p{color:blue;}
相鄰選擇器 = 子選擇器 = 後代選擇器(應用最後一個)ci
p~p{color:red;} body p{color:blue;} body > p{color:green;}
後代選擇器 > 標籤選擇器get
p ~ p{color:blue;} p{color:green;}
<style></style>
同 <link />
同級,應用取決於<style>
標籤和<link />
標籤的前後順序it
元素style=""
屬性的優先級高於以上兩種樣式ast
!important
優先級高於以上兩種樣式
備註
!important
在IE6中的BUG:在同一組CSS屬性中, !important
不起做用。如:
#selector{color:blue !important;color:green;}
讀取選擇器的原則是從右到左。所以,咱們書寫的右邊的最後一個選擇器,被稱做關鍵選擇器,對於效率有決定性影響。
如下效率排行由 @Steve Souders 提供。
優先級高的不必定效率高
舉個例子:#id .class
與 div#id p.class
前者效率高於後者,然後者優先級高於前者。咱們須要在效率與優先級之間平衡取捨。
如下網址提供了諸多建議:
https://developer.mozilla.org/en-US/docs/Web/Guide/CSS/Writing_efficie...
扼要摘其精要總結以下:
避免使用通配符
不使用標籤名或類名修飾ID規則:若是規則使用ID選擇器做爲關鍵選擇器,不要給規則添加標籤名。由於ID自己就是惟一的,添加標籤名會沒必要要地下降匹配效率。
不使用標籤名修飾類:相較於標籤,類更具獨特性。
儘可能選擇最具體的方式:形成低效的最簡單粗暴的緣由就是在標籤上使用太多規則。給元素添加類能夠更快細分到類方式,能夠減小規則去匹配標籤的時間。
關於後代選擇器和子選擇器:避免使用後代選擇器,非要用的話建議用子選擇器代替,但子選擇器也要慎用,標籤規則永遠不要包含子選擇器。
利用可繼承性:不必在通常內容上聲明樣式。