選擇器的特殊性:特殊性的值表示為四個部分 ,比如 0 0 0 0
對于選擇器中給定的各個ID屬性值,加0 1 0 0?
對于選擇器中給定的各個類屬性值,屬性選擇或偽類加 0 0 1 0
對于選擇器中給定的各個元素和偽元素,加- 0 0 0 1 偽元素有特殊性,其特殊性為0 0 0 1
結合符合通配選擇器對特殊性沒有任何貢獻
內聯樣式的特殊性為 1 0 0 0?
特殊性自左到右逐個比較 1 0 0 0 大于 0 * * * ?0 0 1 0 大于 ?0 0 0 13
重要聲明
在屬性值結束分號前!important 標志 ,該標志必須放在聲明的最后,每個聲明都需要加!important才能生效
特殊性:重要聲明分為一組,非重要聲明為一組,重要聲明的特殊性總大于非重要聲明,每組元素的特殊性內部分別計算。
繼承
繼承無特殊性,比0特殊性還弱
層疊
創作人員樣式勝過讀者樣式,有!important樣式讀者樣式要強于其他所有樣式,包括有!important樣式的創作者樣式,創作人員樣式和讀者樣式都比用戶代理的默認樣式強。
按特殊性排序,較高特殊性的元素權重大于較低特殊性的元素
按出現順序排序,一個聲明在樣式表中出現的順序越靠后,權重越大。一般認為導入樣式表中的聲明在前,主樣式表中的所有聲明在后。
!important 強于內聯樣式
權重的大小順序為
1、讀者的重要聲明
2、創作人員的重要聲明
3、創作人員的正常聲明
4、讀者的正常聲明
5、用戶代理聲明
link-visited-hover-active順序的原因
根據越往后的權重越大原則,actice最先,之后是hover 再是visited ?再是link
如果寫作:
:active{ }
:hover{}
:link{}
:visited{}
因為一個元素要么是訪問過的要么是未訪問的,總會覆蓋hover,
根據這一規則,想要讓未訪問的有懸停樣式,已訪問的沒有可以寫為:
:link--:hover--:visited--:active
:visited會覆蓋hover
為避免沖突,可以使用偽類串聯
:link:hover{} 這種寫法合法
:link{color:green}
:visited{color:blue}
:link:hover{color:red}
:visited{color:black}