淺析CSS :is() 和 :where() 即將出現(xiàn)在瀏覽器中
現(xiàn)在,Safari(技術(shù)預覽版106)和Firefox(版本78)的預覽版均支持新的CSS :is() 和 :where() 偽類。Chrome的實施仍然落后。
使用 :is() 減少重復
你可以使用 :is() 偽類來刪除選擇器列表中的重復項。
/* before */
.embed .save-button:hover,
.attachment .save-button:hover {
opacity: 1;
}
/* after */
:is(.embed, .attachment) .save-button:hover {
opacity: 1;
}
此功能主要在未處理的標準CSS代碼中有用。如果使用Sass或類似的CSS預處理程序,則可能更喜歡嵌套。
注意:瀏覽器還支持非標準的 :-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ù)都不對選擇器的特殊性有所幫助,它的特殊性始終為零。
此功能對于應易于覆蓋的樣式很有用。例如,基本樣式表 sanitize.css 包含以下樣式規(guī)則,如果缺少 <svg fill> 屬性,該規(guī)則將設置默認的填充顏色:
svg:not([fill]) {
fill: currentColor;
}
由于其較高的特殊性(B = 1,C = 1),網(wǎng)站無法使用單個類選擇器(B = 1)覆蓋此聲明,并且被迫添加 !important 或人為地提高選擇器的特殊性(例如 .share- icon.share-icon )。
.share-icon {
fill: blue; /* 由于特殊性較低,因此不適用 */
}
CSS庫和基礎樣式表可以通過用 :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)知識,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-15

新的CSS 偽類函數(shù) :is() 和 :where()示例詳解
這篇文章給大家介紹了新的CSS 偽類函數(shù) :is() 和 :where()示例詳解,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下2022-07-25


