CSS優先順序

qq_39509610發表於2020-12-07

繼承樣式的權重為0。即在巢狀結構中,不管父元素樣式的權重多大,被子元素繼承時,他的權重都為0,也就是說子元素定義的樣式會覆蓋繼承來的樣式。

行內樣式優先。應用style屬性的元素,其行內樣式的權重非常高,可以理解為遠大於100。總之,他擁有比上面提高的選擇器都大的優先順序。

權重相同時,CSS遵循就近原則。也就是說靠近元素的樣式具有最大的優先順序,或者說排在最後的樣式優先順序最大。

CSS定義了一個!important命令,該命令被賦予最大的優先順序。也就是說不管權重如何以及樣式位置的遠近,!important都具有最大優先順序。
CSS特殊性(Specificity)
關於CSS權重,我們需要一套計算公式來去計算,這個就是 CSS Specificity,我們稱為CSS 特性或稱非凡性,它是一個衡量CSS值優先順序的一個標準 具體規範入如下:

specificity用一個四位的數 字串(CSS2是三位)來表示,更像四個級別,值從左到右,左面的最大,一級大於一級,數位之間沒有進位制,級別之間不可超越。

繼承或者* 的貢獻值0,0,0,0
每個元素(標籤)貢獻值為0,0,0,1
每個類,偽類貢獻值為0,0,1,0
每個ID貢獻值為0,1,0,0
每個行內樣式貢獻值1,0,0,0
每個!important貢獻值∞ 無窮大

權重是可以疊加的
div ul li ---------> 0,0,0,3

.nav ul li -------> 0,0,1,2

a:hover -----—> 0,0,1,1

.nav a ----------> 0,0,1,1

#nav p ---------> 0,1,0,1

1.數位之間沒有進位制 比如說: 0,0,0,5 + 0,0,0,5 =0,0,0,10 而不是 0,0, 1, 0, 所以不會存在10個div能趕上一個類選擇器的情況。

  1. 繼承的 權重是 0

總結優先順序:

  1. 使用了 !important宣告的規則。
  2. 內嵌在 HTML 元素的 style屬性裡面的宣告。
  3. 使用了 ID 選擇器的規則。
  4. 使用了類選擇器、屬性選擇器、偽元素和偽類選擇器的規則。
  5. 使用了元素選擇器的規則。
  6. 只包含一個通用選擇器的規則。
  7. 同一類選擇器則遵循就近原則。

相關文章