Sass 中的 @extend 是用來擴展選擇器或占位符。比如:
.error {
border: 1px #f00;
background-color: #fdd;
}
.error.intrusion {
background-image: url("/image/hacked.png");
}
.seriousError {
@extend .error;
border-width: 3px;
}
被編譯為:
.error, .seriousError { border: 1px #f00; background-color: #fdd; } .error.intrusion, .seriousError.intrusion { background-image: url("/image/hacked.png"); } .seriousError { border-width: 3px; }
詳細的可以回顧前面介紹的繼承樣式部分。
擴展選擇器:
@extend 不止擴展類選擇器,還可以擴展任何選擇器,比如 .special.cool, a:hover, 或 a.user[href^=“http://“],例如:
.hoverlink {
@extend a:hover;
}
a:hover {
text-decoration: underline;
}
編譯出來:
a:hover, .hoverlink { text-decoration: underline; }
再來看一個復(fù)雜點的:
.hoverlink {
@extend a:hover;
}
.comment a.user:hover {
font-weight: bold;
}
編譯出來的CSS
.comment a.user:hover, .comment .user.hoverlink { font-weight: bold; }
多個擴展
所設(shè)某個樣式要繼承多個地方的樣式,那么可以使用 @extend 來繼承多個選擇器或占位符的樣式,如:
.error { border: 1px #f00; background-color: #fdd; } .attention { font-size: 3em; background-color: #ff0; } .seriousError { @extend .error; @extend .attention; border-width: 3px; }
編譯出來的CSS
.error, .seriousError { border: 1px #f00; background-color: #fdd; } .attention, .seriousError { font-size: 3em; background-color: #ff0; } .seriousError { border-width: 3px; }
擴展單一選擇器
前面我們知道 %placeholder 不使用@extend顯示調(diào)用是不會生成任何樣式代碼。那么在選擇器中使用占位符一樣。比如下面的代碼:
#context a%extreme { color: blue; font-weight: bold; font-size: 2em; }
這段代碼在不調(diào)用之前不產(chǎn)生任何代碼,只有能過@extend調(diào)用之后才生成代碼:
.notice { @extend %extreme; }
編譯出來的CSS
#context a.notice { color: blue; font-weight: bold; font-size: 2em; }
小伙伴們,現(xiàn)在讓我們來練習(xí)一下@extend的用法吧!
請驗證,完成請求
由于請求次數(shù)過多,請先驗證,完成再次請求
打開微信掃碼自動綁定
綁定后可得到
使用 Ctrl+D 可將課程添加到書簽
舉報