1. 程式人生 > >CSS中多個class的優先順序

CSS中多個class的優先順序

在網頁中為元素新增樣式時,經常會用到多個 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 中的樣式屬性了。

所以,我們在定義樣式屬性時,一定要把最基礎的放在最前面,這樣當有特殊的要求時,就可以覆蓋之前的屬性。