是否有可能在sass中重载mixins?

Tom*_*son 21 sass

假设你有一个像影子一样的mixin:

@mixin box-shadow($offset, $blur, $color)
{
   -moz-box-shadow: $offset $offset $blur $color;
   -webkit-box-shadow: $offset $offset $blur $color;
   box-shadow: $offset $offset $blur $color;
}
Run Code Online (Sandbox Code Playgroud)

是否可以通过以下方式使mixin超载:

@mixin box-shadow($offset, $blur)
{
    @include box-shadow($offset, $blur, #999);
}
Run Code Online (Sandbox Code Playgroud)

或者我必须为mixins使用不同的名称?

num*_*407 23

你不能超载,但典型的做法是设置默认值.

 /* this would take color as an arg, or fall back to #999 on a 2 arg call */
 @mixin box-shadow($offset, $blur, $color: #999) {
   -webkit-box-shadow: $offset $offset $blur $color;
   -moz-box-shadow: $offset $offset $blur $color;
   box-shadow: $offset $offset $blur $color;
 }
Run Code Online (Sandbox Code Playgroud)

  • 这也没有考虑现有mixin何时是您不能或不想修改的供应商库的一部分. (4认同)
  • @Tomas虽然它适用于你的情况,但它根本不会真正超载:重载将允许你有两个单独的mixins这个`border-radius($ radius);`和`border-radius($ top-corners,$ bottom-拐角)` (3认同)