CSS特異性是一組規則,當多個聲明衝突相同元素時,瀏覽器應用了哪些樣式聲明。使用四部分排名系統計算CSS選擇器的特異性,其中不同類型的選擇器具有不同的權重:
1,0,0,0
表示。這意味著任何內聯樣式都將覆蓋外部或內部樣式表中定義的任何樣式,除非!important
。0,1,0,0
表示。例如, #navbar
的特異性為0,1,0,0
。0,0,1,0
。示例包括.btn
, [type="text"]
和:hover
。0,0,0,1
。示例包括div
, p
和::before
。比較特異性時,將從左至右進行比較。例如,特異性為0,1,0,0
的選擇器將始終贏得特異性為0,0,1,0
的選擇器。如果兩個選擇器具有相同的特異性,則將應用CSS代碼後面出現的特異性。
幾個因素影響CSS選擇器的特異性:
div#navbar
將元素選擇器( div
)與ID選擇器( #navbar
)組合在一起,從而獲得0,1,0,1
的特異性。!important
:雖然不是傳統的特異性計算意義上的一個因素,但使用!important
可以覆蓋任何特異性規則,從而使其成為強大(儘管不建議定期使用)工具。為了覆蓋具有更高特異性的CSS樣式,您可以採用幾種策略:
.btn
(特異性0,0,1,0
),則可以使用.container .btn
(特異性0,0,2,0
)或#navbar .btn
(特異性0,1,1,0
)。#navbar
具有比.navbar
更高的特異性。!important
:作為最後的手段,您可以使用!important
聲明來覆蓋其他樣式。例如, color: blue !important;
將覆蓋該元素的任何其他color
聲明。但是,使用!important
是,通常會灰心,因為它可能導致維護問題。是的,您可以使用!important
。當屬於!important
,無論選擇器的特異性如何,它都會覆蓋同一屬性的任何其他聲明。
但是,要考慮的重要含義:
!important
是您的CSS難以維護。如果多個開發人員正在從事同一項目,他們可能不知道現有的!important
聲明,導致意外行為。!important
是,開發人員添加了越來越多的!important
聲明以覆蓋以前的聲明,這是適得其反的,並且導致了難以控制的CSS。!important
可能會破壞CSS繼承的正常流動,從而更難預測樣式如何級聯。!important
是與CSS最佳實踐抗衡,該實踐倡導結構良好的模塊化CSS,可以輕鬆管理,而無需訴諸這樣的替代。總而言之,儘管!important
是在特定情況下(例如重疊的第三方圖書館樣式)是一個有用的工具,但應謹慎使用。一種更好的方法是在必要時使用更具體的選擇器來最大程度地減少對此類覆蓋的需求的方式構建CSS。
以上是CSS特異性如何計算?的詳細內容。更多資訊請關注PHP中文網其他相關文章!