CSS中的層疊是指當(dāng)多個(gè)CSS樣式作用于同一個(gè)元素時(shí),它們之間的優(yōu)先級關(guān)系。CSS的層疊順序可以通過以下三個(gè)因素來確定:
- 重要性(!important),即使用!important聲明的樣式會覆蓋其他樣式。
- 特殊性(Specificity),即選擇器的特殊性越高,優(yōu)先級越高。
- 來源順序(source order),即后面聲明的樣式優(yōu)先級比前面聲明的樣式高。
下面我們詳細(xì)解釋一下這三個(gè)因素:
1. 重要性(!important)
如果一個(gè)樣式使用了!important聲明,那么它會覆蓋其他所有樣式。這是因?yàn)?important聲明的優(yōu)先級最高,即使同樣特殊性的選擇器出現(xiàn)在后面,也不會覆蓋!important聲明。
p {
color: red !important;
}
p {
color: blue;
}
<p>這段文字最終顏色為紅色</p>
2. 特殊性(Specificity)
特殊性是指選擇器的優(yōu)先級。選擇器越具體,越具有特殊性,優(yōu)先級越高。
計(jì)算特殊性的規(guī)則如下:
- 標(biāo)簽選擇器的特殊性為0,類選擇器的特殊性為1,ID選擇器的特殊性為100,行內(nèi)樣式的特殊性為1000。
- 選擇器中每出現(xiàn)一個(gè)繼承選擇器,特殊性加1。
- 選擇器中每出現(xiàn)一個(gè)class,ID或?qū)傩赃x擇器,特殊性加10。
- 選擇器中每出現(xiàn)一個(gè)偽類選擇器,特殊性加10,偽元素選擇器特殊性為100。
例如:p.class#id是一個(gè)選擇器,它的特殊性為:1(class) + 100(ID) + 0(標(biāo)簽選擇器) = 101。
p {
color: red;
}
.special p {
color: blue;
}
<p class="special">這段文字的顏色為藍(lán)色</p>
3. 來源順序(source order)
如果以上兩個(gè)因素相同,則最后聲明的樣式優(yōu)先級更高。
p {
color: red;
}
p {
color: blue;
}
<p>這段文字的顏色為藍(lán)色</p>
總結(jié)一下:
- 盡量避免使用!important聲明;
- 盡量避免使用過度特殊的選擇器;
- 盡量避免使用相同特殊性并且位置相同的樣式。
上一篇mysql有外鍵怎么更新
下一篇mysql有外鍵約束