Lala Code

Lala 的前端大補帖,歡迎一起鑽研前端技術😊

0%

Day29-掌控 CSS 樣式優先級:避免衝突的關鍵技巧

Specificity

在前面的 28 天,我們介紹了多種選擇器,包括基本選擇器、複合選擇器、偽類選擇器、偽元素,接下來要進入到樣式的優先級(Specificity),本篇文章將會先以基本選擇器來說明,並理解優先級對於編寫可維護的 CSS 至關重要。



💠 哪時候會使用到優先級?

當一個元素符合多個選擇器的條件,並且這些選擇器為同一屬性設置了不同的值時,瀏覽器會根據優先級決定應用哪個樣式。如果沒有衝突,則會自動沿用原樣式。



💠 樣式的優先級順序

優先級的順序依據選擇器的權重決定。我們來看看一些常見的選擇器範例,並列出它們的權重排名:

1
<h2 class="h2" id="h2" style="color: green">Lala Code</h2>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
* {
color: red;
}

.h2 {
color: orange;
}

h2 {
color: gold;
}

#h2 {
color: skyblue;
}

在這段程式碼中,我們為同一個 <h2> 元素分別使用了通用選擇器(*)、類選擇器(.h2)、元素選擇器(h2)和 ID 選擇器(#h2),並加上了行內樣式 style="color: green"

最終應用的樣式顯示為綠色,這是因為行內樣式的優先級最高。

Specificity



當行內樣式被移除後,會應用 ID 選擇器的樣式,因為 ID 選擇器的優先級高於其他選擇器。

1
<h2 class="h2" id="h2">Lala Code</h2>

Specificity



總結來看,優先級的排序為:

1
行內樣式 > ID 選擇器 > 類選擇器 > 元素選擇器 > 通用選擇器

優先級順序範例:[CODEPEN]



💠 !important:強制應用樣式

由上面的範例,我們可以知道「行內樣式」權重大於所有選擇器,而其實還有比行內樣式更高的,就是 !important
加上 !important 關鍵字後,即使有其他更高權重的選擇器,最終的樣式依然會是帶有 !important 的樣式。

例如在剛剛的範例中,元素選擇器 h2 加上 !important

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
* {
color: red;
}

.h2 {
color: orange;
}

h2 {
color: gold !important;
}

#h2 {
color: skyblue;
}

無論其他選擇器樣式如何或是否有行內樣式,<h2> 的顏色都將呈現為金黃色,因為 !important 的權重最高。

Specificity


💠 總結

  • 樣式優先級由高到低依次為:行內樣式 > ID 選擇器 > 類選擇器 > 元素選擇器 > 通用選擇器。
  • 使用 !important 可以強制應用樣式,超越所有其他選擇器。
  • 理解 CSS 樣式的優先級有助於撰寫乾淨、可維護的程式碼,避免樣式衝突。


🚀實體工作坊分享

玩轉 Web頁面的前端技術(HTML/CSS/JS) 一日體驗課

最近時賦學苑開了實體體驗課,即使你對程式碼沒有概念也能上手!Lala 會帶你一起做出一個個人品牌形象網站,帶你快速了解前端的開發流程,快跟我們一起玩轉 Web 吧!



🚀線上課程分享

線上課程可以加速學習的時間,省去了不少看文件的時間XD,以下是我推薦的一些課程
想學習更多關於前後端的線上課程,可以參考看看。

Hahow

Hahow 有各式各樣類型的課程,而且是無限次數觀看,對學生或上班族而言,不用擔心被時間綁住



六角學院

如果你是初學者,非常推薦六角學院哦!
剛開始轉職也是上了六角的課,非常的淺顯易懂,最重要的是,隨時還有線上的助教幫你解決問題!


Udemy

Udemy 裡的課程非常的多,品質普遍不錯,且價格都滿實惠的,CP值很高!
也是很多工程師推薦的線上課程網站。
❤️