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


