優先級由高到低(高是 最終css顯示的效果)
用戶的重要聲明(最大):!important
>
程序員寫的重要聲明: !important
>
內聯(標籤中的style直接寫的那種)
>
id選擇器
>
類選擇器、屬性選擇器、僞類
>
元素選擇器和僞元素(例如:div{color:red})
>
通配符選擇器,例如:*{width:200px}
>
繼承父元素嵌套div這種,裏面的可以繼承外面標籤的css樣式
css聲明的優先級
選擇器的特殊性
選擇器的特殊性由選擇器本身的組件確定,特殊性值表述爲4個部分,如 0,0,0,0
一個選擇器的具體特殊性如下確定:
1.對於選擇器中給定的ID屬性值,加 0,1,0,0
2.對於選擇器中給定的各個類屬性,屬性選擇,或僞類,加 0,0,1,0
3.對於選擇器中的給定的各個元素和僞元素,加0,0,0,1
4.通配符選擇器的特殊性爲0,0,0,0
5.結合符對選擇器特殊性沒有一點貢獻
6.內聯聲明的特殊性都是1,0,0,0
7.繼承沒有特殊性
特殊性 1,0,0,0 大於所有以0開頭的特殊性(不進位)
選擇器的特殊性最終都會授予給其對應的聲明
如果多個規則與同一個元素匹配,而且有些聲明互相沖突時,特殊性越大的越佔優勢
注意:id選擇器和屬性選擇器
div[id="test"](0,0,1,1) 和 #test(0,1,0,0)
重要聲明
有時某個聲明比較重要,超過了所有其他聲明,css2.1就稱之爲重要聲明
並允許在這些聲明的結束分號之前插入 !important 來標誌
必須要準確的放置 !important 否則聲明無效。
!important 總是要放在聲明的最後,即分號的前面
標誌爲 !important的聲明並沒有特殊的特殊性值,不過要與非重要聲明分開考慮。
實際上所有的重要聲明會被瀏覽器分爲一組,重要聲明的衝突會在其內部解決
非重要聲明也會被分爲一組,非重要聲明的衝突也會在其內部解決
如果一個重要聲明與非重要聲明衝突,勝出的總是重要聲明
繼承
繼承沒有特殊性,甚至連0特殊性都沒有
0特殊性要比無特殊性來的強
來源
css樣式的來源大致有三種
創作人員
讀者
用戶代理
權重:
讀者的重要聲明
創作人員的重要聲明
創作人員的正常聲明
讀者的正常聲明
用戶代理的聲明
層疊
1.找出所有相關的規則,這些規則都包含一個選擇器
2.計算聲明的優先級
先按來源排序
在按選擇器的特殊性排序
最終按順序