Подтвердить что ты не робот

Пропуск необязательного аргумента в Sass mixin

У меня есть этот mixin для обработки простого линейного градиента CSS3:

@mixin linear-gradient($from, $to, $dir: bottom, $dir-webkit: top, $ie-filters: false) {
    background-color: $to;
    background-image: -webkit-linear-gradient($dir-webkit, $from, $to);
    background-image: linear-gradient(to $dir, $from, $to);
    @if $ie-filters == true and $old-ie {
         filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#{ie-hex-str($from)}', endColorstr='#{ie-hex-str($to)}');
    }
}

$dir является коротким для "направления".

Если мне нужно сделать $ie-filters 'true', и мне не нужно менять значения по умолчанию $dir/$dir-webkit, мне все равно нужно их обновить, что явно не очень суровое и оптимальное, поэтому я 'd должен сделать это:

@include linear-gradient(#7a7a7a, #1a1a1a, bottom, top, true);

Когда я просто хочу это сделать:

@include linear-gradient(#7a7a7a, #1a1a1a, true);

Как пропустить аргументы таким образом при вызове mixin?

PS, если вы задаетесь вопросом о аргументе $dir-webkit для Webkit, поскольку он по-прежнему не обрабатывает новый синтаксис градиента (см. http://generatedcontent.org/post/37949105556/updateyourcss3 Новый синтаксис градиента), направление должно быть противоположно стандартному синтаксису.

4b9b3361

Ответ 1

Начиная с SASS 3.1 вы можете передать именованные аргументы для этого:

@include linear-gradient($from: #7a7a7a, $to: #1a1a1a, $ie-filters: true);

Остальное будет по умолчанию.