时间:2021-07-01 10:21:17 帮助过:43人阅读
在调用类似这样的混合宏时,会多有一个机会,假设你的页面中的圆角很多地方都是“3px”的圆角,那么这个时候只
需要调用默认的混合宏“border-radius”:
.btn {
@include border-radius;
}
编译出来的CSS
.btn{
-webkit-border-radius:3px
border-radius:3px
}
但有的时候,页面中有些元素的圆角值不一样,那么可以随机给混合宏传值,如:
.box {
@include border-radius(50%);
}
编译出来的 CSS:
.box {
-webkit-border-radius: 50%;
border-radius: 50%;
}
混合宏的参数-传多个参数
Sass 混合宏除了能传一个参数之外,还可以传多个参数,如:
@mixin center($width,$height){
width:$width;
height:$height;
position:absolute;
top:50%;
left:50%:
margin-top:($height)/2;
margin-left:-($width)/2;
}
在混合宏“center”就传了多个参数。在实际调用其他混合宏是一样的。
.box-center{
@include center(500px,300px);
}
编译出来 css
.box-center{
width:500px;
height:300px;
position:absolute;
top:50%;
left:50%;
margin-top:-150px;
margin-left:-250px;
}
有一个特别的参数“...”,当混合宏穿的参数传的参数过多之时,可以使用参数来代替 如;
@mixin box-shadow($shadows...){
@if length($shadows) >=1{
-webkit-box-shadow:$shadows;
box-shadow:$shadows;
}@else{
$shadows: 0 0 2px rgba(#000,.25);
-webkit-box-shadow:$shadow;
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);
}
混合宏的参数--混合宏的不足
混合宏在实际编码中给我们带来很多方便之处,特别是对于复用重复代码块,但是最大的不足之处是生产
冗余的代码块,比如在不同的地方调用一个相同的混合宏。
@mixin border-radius{
-webkit-border-radius:3px;
border-radius:3px;
}
. box{
@include border-radius;
margin-bottom:5px;
}
.btn{
@include border-radius;
}
示例在“.box”和“.btn”中等能调用了定义好的“border-radius”混合宏。先来看编译出来的css;
.box{
-webkit-border-radius:3px;
border-radius:3px;
margin-bottom:5px;
}
.btn{
-webkit-border-radius;3ox;
border-radius:3px;
}
sass 在调用相同的混合宏时,并不能智能的将相同的样式代码块合并在一起。这也是 Sass 的混合宏最不足之处