Установка переменной в @mixin в Sass?

Есть ли способ установить @include mixin(); в переменную? Я попробовал это

@mixin bg-gradient($fallback, $type, $positionX, $positionY, $from, $from-percent, $to, $to-percent){
    background: $fallback;
    background: -webkit-#{$type}-gradient($positionX $positionY, $from $from-percent, $to $to-percent);
    background:    -moz-#{$type}-gradient($positionX $positionY, $from $from-percent, $to $to-percent);
    background:         #{$type}-gradient($positionX $positionY, $from $from-percent, $to $to-percent);
}

$navBg: @include bg-gradient(#eee, radial, top, center, #999, 0%, #555, 100%);
body { $navBg; } // it gave me an error

Ответы

Ответ 1

Я не знаю, как это сделать конкретно, но если вы пытаетесь просто высушить свои настройки на этом конкретном типе градиента, вы можете написать для него обертки:

@mixin navBg() {
    @include bg-gradient(#eee, radial, top, center, #999, 0%, #555, 100%);
}
body { @include navBg; }

Edit

Здесь список типов данных, поддерживаемых переменными SASS. Ни звонки mixin, ни результат их (целые правила CSS) не включены. Я также пробовал рассматривать include как строку и интерполировать его, но это работает только для CSS конечного результата, а не для дальнейших директив.

Ответ 2

@mixin gradient ($place, $bcolor1, $bcolor2){`<br>`
  background-image: linear-gradient($place, $bcolor1, $bcolor2)`<br>`
  background-image: -o-linear-gradient($place, $bcolor1, $bcolor2)`<br>`
  background-image: -moz-linear-gradient($place, $bcolor1, $bcolor2)`<br>`
  background-image: -webkit-linear-gradient($place, $bcolor1, $bcolor2)`<br>`
  background-image: -ms-linear-gradient($place, $bcolor1, $bcolor2)`<br>`
}

body{
  @include gradient(bottom, #F90000 18%, #FF4C4C 66%)
}

Ответ 3

Если вы пытаетесь установить возвращаемое значение переменной SASS, вам нужно использовать @function, а не @mixin. Это немного задержало меня и не знало о @функции. Например...

@function font($font-size, $line-height: 1.4, $font-family: Arial) {

    @if $line-height == 1.4 {
        $line-height: round($line-height*$font-size);
    }

    @return #{$font-size}/#{$line-height} $font-family;
}

$font-medium: font(20px);

Кстати, хотя это не касается того, что именно этот пользователь ищет точно, это единственное, что появляется в интернет-поиске о настройке var для mixin, поэтому я хотел бы поделиться этим здесь, чтобы другие знали что делать, если эта ситуация всплывает.