徹底搞清楚css權重

2021-09-24 07:00:16 字數 1601 閱讀 3738

乙個元素有多個樣式對他進行設定的時候,那麼哪個樣式會起作用呢?這就需要乙個規則計算,這個規則就是權重。誰的權重大,就使用那個樣式。

根據w3c的規範,元素分為三個等級:

我們按照剛才的規則進行分類計算,計算一下有幾個a,幾個b, 幾個c

示例:

body

#content

.data

img:hover

複製**

這個按照a,b,c這種格式計算的結果就是:1,2,2

我們來分析一下。

有1個a#content

有2個b:乙個class:.data, 乙個偽類::hover

有2個cbodyimg

那我們再來看幾個例子:

// 0,0,2(乙個標籤,乙個偽元素)

li:first-line

複製**

// 0,1,1(乙個屬性選擇器,乙個標籤)

h1 + *[rel=up]

複製**

// 1,1,2(乙個id選擇器,乙個類選擇器,2個標籤)

body #darkside .sith p

複製**

現在我們已經知道怎麼計算權重了,下一步我們就看看怎麼來比較誰的權重大誰的權重小。權重大的樣式會起作用。

首先比較第乙個等級a,誰的a的個數多權重就大。如果a的個數一樣,則比較b,跟a的規則一樣,誰的b的個數多,誰的權重就大。如果一樣在比較c。一樣的規則。

這樣的話,誰的權重大,誰就對元素起作用。

如果最後abc都一樣怎麼辦,那就比較誰最後寫的,一般後面寫的會覆蓋前面的樣式。

比如:

body

div

div複製**

以上兩個樣式,blue會起作用。

除了以上三個等級之外,我們還有另外兩個,乙個是行內樣式,乙個是!important

而行內樣式 比 id選擇器高一級,!important比行內樣式又高一級。

所以最終等級比較是:

!important> 行內樣式 > id選擇器 > 類選擇器 | 屬性選擇器| 偽類選擇器 > 標籤|偽元素

通過上面的方法,我們就可以計算出權重,比較大小。就可以知道那個樣式會起作用了。

最後推薦乙個特別棒的工具,你可以輸入選擇器,然後計算權重。也可以對多個權重進行排序。

如果不清楚哪個權重更大,使用這個工具可以一目了然,也方便我們對權重的學習。

徹底搞清楚SSL TLS

ssl secure sockets layer 最初由netscape定義,分別有sslv2和sslv3兩個版本 sslv1未曾對外發布 在sslv3之後ssl重新命名為tls。tls transport layer security 版本從tlsv1.0開始,tlsv1.0是在sslv3的基礎上...

STL set讓你徹底搞清楚set的特性

set的特性是,所有元素都會根據元素的鍵值自動被排序,set的元素不像map那樣可以同時擁有實值 value 和鍵值 key set元素的鍵值就是實值,實值就是鍵值。set不允許兩個元素有相同的鍵值。我們可以通過set的迭代器改變set的元素嗎?不行的,因為set元素值就是其鍵值,關係到set元素的...

搞清楚LzoCodec和LzopCodec

使用lzo過程會發現它有兩種壓縮編碼可以使用,即lzocodec和lzopcodec,下面說說它們區別 lzocodec比lzopcodec更快,lzopcodec為了相容lzop程式新增了如bytes signature,header等資訊 如果使用 lzocodec作為reduce輸出,則輸出擴...