繼承:可以將某個元素設定的參數複製到另一個元素。
使用 %
佔位符號宣告,將所有相同樣式內容合併,再以 @extend
來引入使用。重複寫的相同樣式延伸到要套用的 class 上,並將有用到的 extends 輸出成 css,這樣可以有效減少 css 的行數,優化整體的呈現效果。
例如:
//scss//
%message-shared {
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
%equal-heights {
display: flex;
flex-wrap: wrap;
}
.message {
@extend %message-shared;
}
.success {
@extend %message-shared;
border-color: green;
}
.error {
@extend %message-shared;
border-color: red;
}
.warning {
@extend %message-shared;
border-color: yellow;
}
編| .有被 @extend 的 class 才會被編譯成 CSS 程式碼,並用 %message-shared
整合到共用樣式,
譯| 且可以在其他地方共用這段樣式時使用**@extend %message-shared**
後| .共用屬性 %equal-heights
沒有被共用,在編譯成 CSS 後並不會產生,這個寫法又被稱為
V 「佔位選擇器(placeholder selector)」。
//css//
.message, .success, .error, .warning {
border: 1px solid #ccc;
padding: 10px;
color: #333;
}
.success {
border-color: green;
}
.error {
border-color: red;
}
.warning {
border-color: yellow;
}
多重擴展
@extend也可以擴展多個選擇器,代表它繼承了擴展選擇器的樣式。
例如:
//scss//
.error {
background-color: #ffffff;
}
.notice {
font-size: 25rem;
font-family: Arial, Helvetica, sans-serif;
font-color: #000;
}
.seriousError {
@extend .error;
@extend .notice;
background-color: #6b0a0a;
}
編|
譯|
後|
V
//css//
.error, .seriousError {
background-color: #ffffff;
}
.notice, .seriousError {
font-size: 25rem;
font-family: Arial, Helvetica, sans-serif;
font-color: #000;
}
.seriousError {
background-color: #6b0a0a;
}