当样式变得越来越复杂,需要重复使用大段的样式时,sass中的混合宏就会有很大的意义
声明混合宏(@mixin)
调用混合宏(@include)
一、不带参数的混合宏
声明:
@mixin border-radius{
-webkit-border-radius: 5px;
border-radius: 5px;
}
调用
button {
@include border-radius;
}
编译后的css
button {
-webkit-border-radius: 3px;
border-radius: 3px;
}
二、带参数的混合宏
一个参数:
声明:
@mixin border-radius($radius:5px){
-webkit-border-radius: $radius;
border-radius: $radius;
}
调用:
.box {
@include border-radius(3px);
}
编译后的css为:
.box {
-webkit-border-radius: 3px;
border-radius: 3px;
}
两个参数:
声明:
@mixin center($width,$height){
width: $width;
height: $height;
position: absolute;
top: 50%;
left: 50%;
margin-top: -($height) / 2;
margin-left: -($width) / 2;
}
调用:
.box-center {
@include center(500px,300px);
}
编译后的css为:
.box-center{
width:500px;
height:300px;
}
三、复杂的混合宏
当混合宏参数过多时,使用"…"
当 $shadow 的参数数量值大于或等于“ 1 ”时,表示有多个阴影值,反之调用默认的参数值“ 0 0 4px rgba(0,0,0,.3)
声明:
@mixin box-shadow($shadow...) {
@if length($shadow) >= 1 {
@include prefixer(box-shadow, $shadow);
} @else{
$shadow:0 0 4px rgba(0,0,0,.3);
@include prefixer(box-shadow, $shadow);
}
}
调用:
.box {
@include box-shadow(0 0 1px rgba(#000,.5),0 0 2px rgba(#000,.2));
}
编译出来的css为:
.box {
-webkit-box-shadow: 0 0 1px rgba(0, 0, 0, 0.5), 0 0 2px rgba(0, 0, 0, 0.2);
box-shadow: 0 0 1px rgba(0, 0, 0, 0.5), 0 0 2px rgba(0, 0, 0, 0.2);
}