【HTML、CSS教學】5. CSS權重
Published in
3 min readNov 29, 2019
🚩 CSS權重
網頁在載入CSS的時候是有順序性,順序分別為:
inline 套用CSS →HTML內部載入CSS →外部載入CSS
- inline 套用CSS
直接在html上寫CSS,例如:<div class=”wrap” style=”color:white;”> - HTML內部載入CSS
直接在html的<style>標籤內寫CSS - 外部載入CSS
在html的head裡引用,例如:<link rel=”stylesheet” href=”css/all.css”>
CSS選擇器類型的明確度順序為:
id > class > element
CSS的讀取是由上而下的,當後讀取的權重大於等於先讀取時,後讀取的設定會蓋掉前面的,所以CSS Reset需要寫在最上面,之後才是自己寫的CSS。
權重分數計算如表:
這邊用分數來舉例,只是方便理解權重大小的差異,實際上不同層的分數,即使再高也無法超越上一層。例如:
寫了十次.box的class name,它的權重依然比只寫一次#test1的id還要小。
其中!important是一個很特別的用法,它可以打破不同層級的界線。
例如在inline寫上CSS,原先外部載入CSS不管怎麼寫,都無法蓋過在inline的寫法,但透過!important就可以強制套用。
不過一般不會建議使用,因為這會在管理CSS上造成很大的困擾,若是外部載入的CSS寫了!important,那inline的寫法又要取代外部載入的CSS時,
僅能在inline加入!important才能夠覆蓋。
只有important可以超越important。
!important是在沒有更好的辦法下所使用的,一般不建議使用,否則會增加維護的困難。
🚩 範例說明
權重分數範例1:
權重分數範例2:
若是如以下的範例,字體大小將會套用 60px,
因為在.box2 的 font-size 寫了 !important。
<style>
.box2{
font-size: 60px !important;
}
.box1 .box2 {
font-size: 10px;
}
</style><div class="box1">
<div class="box2">範例</div>
</div>