從CSS代碼存放位置看權重優先級:內嵌樣式 > 內部樣式表 > 外聯樣式表。
從樣式選擇器看權重優先級:important > 內嵌樣式 > ID > 類 > 標籤 | 僞類 | 屬性選擇 > 僞元素 > 繼承 > 通配符。
CSS權重是由四個數值決定:
第一等:代表內聯樣式,如: style=””,權值爲1000。
第二等:代表ID選擇器,如:#content,權值爲100。
第三等:代表類、僞類和屬性選擇器,如.content,:hover,[type="text"],權值爲10。
第四等:代表標籤選擇器和僞元素選擇器,如div p,::before,權值爲1。
通配選擇符(universal selector)(*
)關係選擇符(combinators)(+
, >
, ~
, '
', ||
)和 否定僞類(negation pseudo-class)(:not()
)對優先級沒有影響(但是,在 :not()
內部聲明的選擇器會影響優先級)。
最後把這些值加起來,再就是當前元素的權重了。
權重算出來了,但是某個元素到底用哪個樣式,還有3個規則:
1,如果樣式上加有!important標記,那麼始終採用這個標記的樣式;
2、匹配的內容按照CSS權重排序,權重大的優先;
3,如果權重也一樣,按照它在CSS樣式表裏聲明的順序,後聲明的優先。