乙個元素有多個樣式對他進行設定的時候,那麼哪個樣式會起作用呢?這就需要乙個規則計算,這個規則就是權重。誰的權重大,就使用那個樣式。
根據w3c的規範,元素分為三個等級:
我們按照剛才的規則進行分類計算,計算一下有幾個a
,幾個b
, 幾個c
。
示例:
body
#content
.data
img:hover
複製**
這個按照a,b,c
這種格式計算的結果就是:1,2,2
。
我們來分析一下。
有1個a
:#content
。
有2個b
:乙個class:.data
, 乙個偽類::hover
。
有2個c
:body
和img
那我們再來看幾個例子:
// 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輸出,則輸出擴...