CSS 選擇器優(yōu)先級是判斷一個元素css樣式的基本參考,通過css選擇器權重和決定盗似,每一類選擇器都有其固定的權值。
通過加和計算權重值后驮捍,權重高的樣式表將控制元素樣式,權重相同的樣式表則由后面的樣式覆蓋脚曾。
先看一下css究竟有幾種選擇器
-
基礎選擇器
-
關系選擇器
群選擇器不適用權重累加規(guī)則东且,不多提
權重分為7類:
1. !important
跟在單條樣式后,一般代表最高權重本讥,可以覆寫所有樣式珊泳。
但一般不推薦使用,除非是做網(wǎng)頁編輯器等應用拷沸,防止用戶修改某定義好的樣式色查。
div {
color: #fff !important;
}
2. 權重1000
代表內聯(lián)樣式。
<div style = "color: #fff;"></div>
3. 權重0100
代表ID選擇器撞芍。
#foo {
color: #fff;
}
4. 權重0010
代表類秧了,偽類和屬性選擇器。
.foo, a:link, [class]{
color: #fff;
}
5. 權重0001
代表標簽選擇器和偽元素選擇器
div, div::after{
color: #fff;
}
6.權重0000
代表通配選擇器序无,可以被其他選擇器任意替換
7.繼承來的屬性
這個情況我在之前遇到過验毡,當時被應用通配選擇器的字體怎么都替換不掉,更改內聯(lián)字體為繼承才解決帝嗡。繼承來的屬性是完全沒有權重的晶通,不論父級元素權重多高。
可以繼承的屬性其實很少丈探。
所有子元素都可繼承:visiblility录择,cursor
內聯(lián)子元素可以繼承:都是有關字體的一些屬性拔莱,color碗降,font,font-style塘秦,font-variant讼渊,font-weight,font-size尊剔,font-family爪幻,letter-spacing,word-spacing须误,white-space挨稿,line-height,text-decoration京痢,text-transform奶甘,direction
塊級元素可以繼承:文本塊的屬性,text-align祭椰,text-indent
關于復雜選擇器
復雜選擇器臭家,也就是關系選擇器疲陕,包括兄弟選擇器啦,后代選擇器啦钉赁,都是沒有特殊權重的蹄殃,總權重只是單純把簡單選擇器出現(xiàn)的次數(shù)累加起來。其本質是
通用選擇器 (*)你踩,組合符 (+, >, ~, ' ')诅岩,和否定偽類 (:not) 不會影響優(yōu)先級。
比如:
div>p {
color: yellow;
}
p+p {
color: red;
}
#這兩個選擇器權重都是0002带膜,由于后面的選擇器更新按厘,最終<p>呈紅色。
#同理钱慢,偽類選擇器也遵守這個規(guī)則
div .foo1 {
color: blue;
}
p:first-child {
color: green;
}
#這兩個選擇器權重也相同逮京,都是0011,.foo呈綠色束莫。