W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
@extend
?指令是幾年前使 Sass 風(fēng)靡一時的重要特性之一。該指令作為一個警示,告知 Sass 對元素 A 的樣式化正好存在與選擇器B共通的地方。不用多說,這是書寫模塊化 CSS 的好助手。
然而我感覺必須提醒你謹(jǐn)慎使用這個特性。正因靈活多變,所以?@extend
?還是一個棘手的概念,某些時候可能弊大于利,特別是被濫用時。當(dāng)擴(kuò)展一個選擇器時,除非你對整個代碼庫有深入的了解,不然肯定沒法回答諸如下面的問題:
如你所知,結(jié)果的可能即包括沒有任何影響,也包括災(zāi)難性副作用。因此,我的第一建議是完全避免使用?@extend
?指令。這聽起來有些殘酷,但最終會拯救你于水火之中。
俗話說的好:
永遠(yuǎn)不要說不可能。
— Apparently,?not Beyonce.
擴(kuò)展選擇器在有些情境下是有用和值得的。始終牢記這些規(guī)則,那樣就不會是自己陷入困境:
如果你要使用擴(kuò)展,我想提醒你它也不能與?@media
?塊元素融洽相處。如你所知,Sass 不能在一個媒體查詢中擴(kuò)展外部的選擇器。當(dāng)你這么做的時候,編譯器輕易就會崩潰,并提醒你不能這么干。這不是好消息,特別是幾乎所有人都知道媒體查詢功能。
.foo {
content: 'foo';
}
@media print {
.bar {
// This doesn't work. Worse: it crashes.
@extend .foo;
}
}
無法在?
@media
?內(nèi)部?@extend
?一個外部選擇器。 只可以使用相同指令?@extend
?選擇器。
這就是常說的?@extend
?可以通過合并選擇器而不是復(fù)制屬性幫助減小文件大小。這種說法是對的,不過一旦經(jīng)?Gzip?處理后這點(diǎn)差異完全可以忽略不計。
也就是說,如果你無法使用 Gzip(或相同工具),在你足夠精通的前提下使用@extend
?方式也是不錯的。
總而言之,除非在某些特殊情況下,否則我建議不要使用?@extend
?指令,但我不會禁用它。
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: