在本节中,我们将学习带参数的混合。混合在Sass中可以接受参数。我们可以在调用混音时通过@include向混音传递参数来定义混音生成的精确样式。将参数传递给mixinMixins可以使用SassScript值作为参数。给定的参数包含在mixin中,并作为变量提供给mixin。由于是变量,在定义参数时,需要在参数名前加上$符号。当我们定义带参数的混合时,混合的参数作为变量名写在混合名后的括号中。如果有多个参数,参数之间用逗号分隔。让我们来看看如何将参数传递给混音。示例:例如,要在mixin中定义两个参数$num和$color,@mixinmy-text($num,$color){font-size:$num;颜色:$颜色;font-weight:bold;}.other{@includemy_text(14px,#fdef92);}编译成CSS代码:.other{font-size:14px;颜色:#fdef92;font-weight:bold;}当我们通过@include指令调用mix时,我们需要给mix的参数赋值,比如上面代码中,参数$num赋值为14px,而参数$color被赋值为#fdef92。默认值参数如上例,定义mix时有两个参数,那么调用mix时必须对这两个参数进行赋值,如果参数没有赋值或者只赋值一个参数,会报错报道。例如,下面是没有给$num参数赋值的错误信息:Error:Mixinmy-textismissingargument$num。online8ofstyle.scss,in`my_text'fromline8ofstyle.scssUse--traceforbacktrace.而如果我们不想将一个参数传递给一个参数,我们可以使用普通的赋值语法variables在定义mix的时候为参数指定一个默认值,这样调用mix的时候,如果参数没有赋值,就会使用默认值代替。例子:比如下面的例子:@mixinmy-text($num,$color:pink){font-size:$num;颜色:$颜色;font-weight:bold;}.other{@includemy_text(14px);}编译成CSS代码:.other{font-size:14px;颜色:粉色;font-weight:bold;}我们在定义混合时,为参数$color指定了默认值pink,所以当我们没有给$color赋值时,会自动使用定义的默认值。除了上面提到的默认值参数,关键字参数也可以用于关键字参数混合。关键字参数以$name:value的形式传递。使用这种方法传递参数,参数的顺序并不重要,只要不漏传参数即可。示例:@mixinmy-text($num,$color){字体大小:$num;颜色:$颜色;font-weight:bold;}.other{@includemy_text($color:#000,$num:16px);}编译成CSS代码:.other{font-size:16px;颜色:#000;font-weight:bold;}可变参数当我们为mixin定义参数时,有时可能不确定mixin中有多少个参数,这时我们可以使用...来设置可变参数。例子:比如当我们为一个元素设置box-shadow时,我们可以使用任意数量的box-shadows作为参数:@mixinmy-text($shadow...){box-shadow:$shadow;}.other{@includemy_text(2px5px10px#ccc,3px6px9px#aaa);}被编译成CSS代码:.other{box-shadow:2px5px10px#ccc,3px6px9px#aaa;}你可以看到上面的代码,在调用mixin的时候,给my_text赋了两个参数的值。当然我们也可以给它指定多个参数的值。
