淺析CSS :is() 和 :where() 即將出現(xiàn)在瀏覽器中

現(xiàn)在,Safari(技術(shù)預(yù)覽版106)和Firefox(版本78)的預(yù)覽版均支持新的CSS :is()
和 :where()
偽類。Chrome的實施仍然落后。
使用 :is() 減少重復(fù)
你可以使用 :is()
偽類來刪除選擇器列表中的重復(fù)項。
/* before */ .embed .save-button:hover, .attachment .save-button:hover { opacity: 1; } /* after */ :is(.embed, .attachment) .save-button:hover { opacity: 1; }
此功能主要在未處理的標(biāo)準(zhǔn)CSS代碼中有用。如果使用Sass或類似的CSS預(yù)處理程序,則可能更喜歡嵌套。
注意:瀏覽器還支持非標(biāo)準(zhǔn)的 :-webkit-any()
和 :-moz-any()
偽類,它們與 :is()
相似,但限制更多。WebKit在2015年棄用了 :-webkit-any()
,Mozilla已將Firefox的用戶代理樣式表更新為使用 :is()
而不是 :-moz-any()
。
使用 :where() 來保持低特殊性
:where()
偽類與 :is()
具有相同的語法和功能。它們之間的唯一區(qū)別是 :where()
不會增加整體選擇器的特殊性(即某條CSS規(guī)則特殊性越高,它的樣式越優(yōu)先被采用)。
:where()
偽類及其任何參數(shù)都不對選擇器的特殊性有所幫助,它的特殊性始終為零。
此功能對于應(yīng)易于覆蓋的樣式很有用。例如,基本樣式表 sanitize.css 包含以下樣式規(guī)則,如果缺少 <svg fill>
屬性,該規(guī)則將設(shè)置默認的填充顏色:
svg:not([fill]) { fill: currentColor; }
由于其較高的特殊性(B = 1,C = 1),網(wǎng)站無法使用單個類選擇器(B = 1)覆蓋此聲明,并且被迫添加 !important
或人為地提高選擇器的特殊性(例如 .share- icon.share-icon
)。
.share-icon { fill: blue; /* 由于特殊性較低,因此不適用 */ }
CSS庫和基礎(chǔ)樣式表可以通過用 :where()
包裝它們的屬性選擇器來避免這個問題,以保持整個選擇器的低特殊性(C=1)。
/* sanitize.css */ svg:where(:not([fill])) { fill: currentColor; } /* author stylesheet */ .share-icon { fill: blue; /* 由于特殊性較高,適用 */ }
總結(jié)
到此這篇關(guān)于CSS :is() 和 :where() 即將出現(xiàn)在瀏覽器中的文章就介紹到這了,更多相關(guān)CSS :is() 和 :where() 瀏覽器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!
相關(guān)文章
- 這篇文章主要介紹了CSS新增的:where和:is偽類函數(shù)是什么的相關(guān)知識,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-15
新的CSS 偽類函數(shù) :is() 和 :where()示例詳解
這篇文章給大家介紹了新的CSS 偽類函數(shù) :is() 和 :where()示例詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下2022-07-25