美文网首页
Sass 带参混合

Sass 带参混合

作者: 暖A暖 | 来源:发表于2021-05-30 20:39 被阅读0次

    本节我们来学习带参混合,Sass 中混合可以接受参数,我们可以通过使用 @include 调用混合时给混合传参,来定义混合生成的精确样式。

    给混合传参

    混合可以用 SassScript 值作为参数,给定的参数被包括在混合中并且作为为变量提供给混合,既然是作为变量,那么定义参数时,参数名前面需要加一个 $ 符号。

    当我们定义一个带参混合时,混合的参数被作为变量名,写到混合名后面的小括号中,如果带有多个参数则通过逗号将参数分隔。下面我们来看一下如何给一个混合传参。

    示例:

    例如在混合中定义两个参数 $num$color

    @mixin my-text($num, $color) {
        font-size: $num;
        color: $color;
        font-weight: bold;
    }
    
    .other{
        @include my_text(14px, #fdef92);
    }
    

    编译成 CSS 代码:

    .other {
      font-size: 14px;
      color: #fdef92;
      font-weight: bold;
    }
    

    我们在通过 @include 指令调用混合时,需要给混合所带的参数赋值,例如上述代码中,给参数 $num 赋值为 14px,给参数 $color 赋值为 #fdef92

    默认值参数

    像上面这个例子中,定义混合时带有两个参数,那么调用混合时必须给这个两个参数赋值,如果不给参数赋值或者只给一个参数赋值则会报错。例如下面是不给 $num 参数赋值的报错信息:

    Error: Mixin my-text is missing argument $num.
            on line 8 of style.scss, in `my_text'
            from line 8 of style.scss
      Use --trace for backtrace.
    

    而如果我们希望可以不给混合中的某个参数传参,可以在定义混合时使用普通变量的赋值语法为参数指定默认值,这样当调用混合时,如果不给参数赋值,则会使用默认值代替。

    示例:

    例如下面这个例子:

    @mixin my-text($num, $color:pink) {
        font-size: $num;
        color: $color;
        font-weight: bold;
    }
    
    .other{
        @include my_text(14px);
    }
    

    编译成 CSS 代码:

    .other {
      font-size: 14px;
      color: pink;
      font-weight: bold;
    }
    

    我们在定义混合时,给参数 $color 指定了默认值 pink,所以当我们没有给 $color 赋值时,会自动使用定义好的默认值。

    关键字参数

    混合中除了可以使用上面讲到的默认值参数,还可以使用关键字参数,关键字参数就是通过 $name:value 形式传参。使用这种方式来传参,参数的顺序并不重要,只要不漏掉参数就可以啦。

    示例:
    @mixin my-text($num, $color) {
        font-size: $num;
        color: $color;
        font-weight: bold;
    }
    
    .other{
        @include my_text($color:#000, $num:16px);
    }
    

    编译成 CSS 代码:

    .other {
      font-size: 16px;
      color: #000;
      font-weight: bold;
    }
    

    可变参数

    当我们给混合定义参数时,有时可能不确定混合中参数的数量,这时我们就可以使用 ... 来设置可变参数。

    示例:

    例如我们给一个元素设置 box-shadow 时,可以使用任何数量的 box-shadow 作为参数:

    @mixin my-text($shadow...) {
        box-shadow: $shadow;
    }
    
    .other{
        @include my_text(2px 5px 10px #ccc, 3px 6px 9px #aaa);
    }
    

    编译成 CSS 代码:

    .other {
      box-shadow: 2px 5px 10px #ccc, 3px 6px 9px #aaa;
    }
    

    可以看到,上述代码中,在调用混合时,给 my_text 指定了两个参数的值。当然我们也可以给它指定多个参数的值。

    相关文章

      网友评论

          本文标题:Sass 带参混合

          本文链接:https://www.haomeiwen.com/subject/zhumsltx.html