選擇器的特殊性
在CSS中針對某個元素的多個相同的規(guī)則永丝,瀏覽器會計算其特殊性。如果一個元素有多個沖突的規(guī)則,具有最高特殊性的聲明會勝出因惭。
特殊性值的表述為4個部分,0,0,0,0
绩衷,規(guī)則如下
對于選擇器中給定的各個ID屬性值蹦魔,加
0,1,0,0
;對于選擇器中給定的各個
類屬性值
,屬性選擇
,偽類
,加0,0,1,0
;對于選擇器中給定的
各個元素
和偽元素
,加0,0,0,1
;通配符(*)的特殊性為
0,0,0,0
;結(jié)合符 和 繼承 沒有特殊性;
style 的重要性為
1,0,0,0
;-
!import的聲明沒有特殊性,但和非!import聲明在一起時咳燕,總是使用含!import的聲明勿决;
注:非0的數(shù)值越靠前,特殊性越高招盲,同一位置的非0的數(shù)值低缩,值越大,特殊性越高
注:繼承沒有特殊性,甚至連0特殊性都沒有咆繁,而通配符有特殊性讳推,所以通配符的特殊性 大于 繼承
注:內(nèi)聯(lián)樣式style和!important使用同一屬性時,!important 勝出
例:
h1 { color: red; } /* 0,0,0,1*/
body h1 { color: red } /* 0,0,0,2*/
h2.warning { color: red } /* 0,0,1,1 */
html > body table tr[id="total"] td ul > li { color: red; } /*0,0, 1,7 */
繼承
樣式不僅應(yīng)用到指定的元素玩般,還會應(yīng)用到它的后臺元素银觅,即繼承
。
大多數(shù)框模型屬性(外邊距坏为、內(nèi)邊距究驴、背景和邊框等)都不能繼承。
層疊
特殊性相同的規(guī)則同時應(yīng)用在同一元素上時匀伏,瀏覽器通過層疊來解決樣式?jīng)_突洒忧。
層疊是通過結(jié)合繼承和特殊性做到的。
層疊規(guī)則:
找出所有相關(guān)的規(guī)則
-
按顯示權(quán)重對應(yīng)用到該元素的所有聲明排序
權(quán)重如下:
讀者的重要聲明
開發(fā)者樣式的重要聲明
開發(fā)者樣式的正常聲明
讀者的正常聲明
-
瀏覽器的默認(rèn)樣式
注: 讀者的聲明是讀者自己寫的樣式够颠,IE可以通過
Internet 選項
->外觀
->輔助功能
->用戶樣式表
來指定樣式文件跑慕。Chrome可以使用Stylish
擴(kuò)展來實現(xiàn)
按特殊性對應(yīng)用到給定元素的所有聲明排序。
按出現(xiàn)順序?qū)?yīng)用到給定元素的所有聲明排序摧找。一個聲明在樣式表或者文檔中越往后出現(xiàn)核行,權(quán)重越大。