CSS 選擇器(Selector)的權重(Specificity)決定了對于同一元素,到底哪一條 CSS 規則會生效。且僅有當多條 CSS 規則都對同一元素聲明了相應樣式時,才會涉及到權重計算的問題。 選擇器的分類正式計算選擇器權重之前,先來看選擇器是如何被分類的。 因為 CSS 選擇器眾多,在計算時,這些選擇器被歸為了三大類,按其權重由大到小依次為:
其中兩類特殊的樣式會影響權重的生效,
其他選擇器,
以上,對權重的計算沒影響,即不參與計算。 權重的計算根據以上對選擇器的分類,對任意樣式規則,可得到
對于同一元素身上的多條樣式,對第條樣式規則計算出上面四個值,然后從左往右逐個比較,數字大的勝出。 如果權重全部一樣,后面的規則會生效。 示例示例一考察下面的示例代碼: <ul class="list"><li class="list-item">item1</li><li class="list-item">item2</li><li class="list-item">item3</li>
</ul> ul > li {color: blue
}.list > .list-item {color: red;
}
兩者一對比,在進行到第三位時,后面的 2>0,所以后者勝出,它的樣式將生效,列表顏色為紅色。 示例二<nav id="nav"><ul><li>1</li><li>2</li><li>3</li></ul>
</nav> nav#nav > li:hover{color: purple;
}li: nth-child(2):hover{color:pink;
}
一對比,前者勝出,因為比較到第二位時,前者是 1 后者是 0。只要有大于的情況,后面的值就不用比較了。 因此列表中元素在 hover 時,會是紫色(purple)。 相關資源
|
轉載于:https://www.cnblogs.com/Wayou/p/css-specificity-calculation.html