CSS中多個class的優先順序
阿新 • • 發佈:2018-12-15
在網頁中為元素新增樣式時,經常會用到多個 class 屬性。
那他們之間的優先順序關係是怎樣的呢:
當一個元素指定多個 class 時,class 的優先順序與指定順序無關,而是和 class 的定義順序有關。後宣告的優先順序高。
比如一個按鈕,我們寫的通用屬性是:
.bt {
border: 1px solid;
border-radius: 5px;
box-sizing: border-box;
background-color: white;
}
也就是說我們的按鈕預設是上面的樣式。如果我們現在有一個特殊的按鈕,我們希望背景顏色是紅色,其他樣式屬性不變,我們可以再定義一個 special 。
.special{
background-color: red;
}
這樣我們在指定元素的 class 屬性時,如何確定 special 的樣式會覆蓋 bt 的樣式呢。
我在一開始寫的時候,我是這樣指定的:
<button class="bt special">按鈕</button>
但是並沒有覆蓋之前的,然後我就修改了順序:
<button class="special bt">按鈕</button>
然後發現仍沒有覆蓋,然後在網上查了一下,當一個元素指定多個 class 時,class 的優先順序與指定順序無關,而是和 class 的定義順序有關。
然後看了一下我的 css 檔案,果然我的 bt 定義在 special 之後,然後我把 他倆的順序換了一下,special 就可以覆蓋 bt 中的樣式屬性了。
所以,我們在定義樣式屬性時,一定要把最基礎的放在最前面,這樣當有特殊的要求時,就可以覆蓋之前的屬性。