mixin、繼承和佔位符
阿新 • • 發佈:2019-02-05
1. mixin混合巨集
宣告方式:
@mixin
呼叫方式:
@include
使用:
它可以傳引數, 所以當代碼塊中涉及到變數時, 可以使用混合巨集來建立相同的程式碼塊.
缺點:
1.它不會自動合併相同的樣式程式碼, 如果在樣式檔案中呼叫同一個混合巨集, 會產生多個對應的樣式程式碼, 造成程式碼的冗餘. 所以程式碼塊中不涉及到變數時, 不要使用混合巨集.
2. 插值不能呼叫混合巨集,如@include bgColor-#{$color}
這樣寫就是錯誤的.
程式碼:
//宣告:
@mixin val($var){
margin-top: $var ;
}
.div {
//呼叫
@include val(5px);
}
2. 繼承
宣告方式:
.class (如 : .titleBar)
呼叫方式:
@extend
使用:
如果程式碼塊不需要傳遞任何變數引數, 而且有一個基類已在檔案中存在, 那麼就可以使用Sass的繼承來呼叫已存在的基類.
使用繼承後, 編譯出來的CSS會將使用繼承的程式碼塊合併到一起, 生成組合選擇器. @extend中可以使用插值, 如@extend .selected-#{$flag}
缺點:
如果基類並不存在於html結構中時, 不管呼叫與不呼叫, 編譯出來的CSS中都會產生基類對應的樣式程式碼.
程式碼:
//SASS
.btn {
border: 1px solid #ccc;
padding: 6px 10px;
font-size: 14px;
}
.btn-primary {
background-color: #f36;
color: #fff;
@extend .btn;
}
.btn-second {
background-color: orange;
color: #fff;
@extend .btn;
}
注: 這裡的SASS程式碼用的是SCSS的標準編寫, 下同.
//編譯出來的CSS程式碼
.btn, .btn-primary , .btn-second {
border: 1px solid #ccc;
padding: 6px 10px;
font-size: 14px;
}
.btn-primary {
background-color: #f36;
color: #fff;
}
.btn-second {
background-clor: orange;
color: #fff;
}
3. %placeholder佔位符
宣告方式:
%placeholder (如: %colorBlue)
呼叫方式:
@extend
使用:
和繼承基本相似, 但是不會在程式碼中生成佔位符的選擇器, 佔位符是獨立定義, 如果不呼叫已宣告的佔位符, 就不會在CSS中產生任何樣式程式碼. @extend中可以使用插值, 如
@extend .selected-#{$flag}
程式碼:
//SASS
%mt10 {
margin-top: 10px;
}
%pt5{
padding-top: 5px;
}
.btn {
@extend %mt10;
@extend %pt5;
}
.block {
@extend %mt10;
span {
@extend %pt5;
}
}
//編譯出來的CSS程式碼
.btn, .block {
margin-top: 10px;
}
.btn, .block span {
padding-top: 5px;
}