Установка переменной в @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, поэтому я хотел бы поделиться этим здесь, чтобы другие знали что делать, если эта ситуация всплывает.