Можно ли перегружать миксины в sass? - PullRequest
21 голосов
/ 07 октября 2011

Допустим, у вас есть миксин для тени, такой как:

@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;
}

Возможно ли перегрузить этот миксин чем-то вроде:

@mixin box-shadow($offset, $blur)
{
    @include box-shadow($offset, $blur, #999);
}

Или мне нужно использовать разныеназвания для миксинов?

Ответы [ 3 ]

23 голосов
/ 07 октября 2011

Вы не можете перегрузить, но обычной практикой будет установка значений по умолчанию.

 /* 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;
 }
3 голосов
/ 16 января 2014

Если вам нужно немного настроить микширование поставщика, вы можете скопировать его в другой файл - включенный после оригинала - и отредактировать его там, и оригинал поставщика будет проигнорирован.

@import "_their-mixins";
@import "_our-mixins";

Предупреждение - это может зависеть от того, какой процессор вы используете.На момент написания он прекрасно работал, используя grunt и grunt-contrib-compass

2 голосов
/ 18 января 2014

@ numbers1311407 решение верное, но вы можете использовать директиву @ each , чтобы создать более короткий миксин:

@mixin box-shadow($offset, $blur, $color: #999) {
  @each $prefix in -moz-, -webkit-, null {
    #{$prefix}box-shadow: $offset $offset $blur $color;
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...