2012-04-05 6 views
14

¿Hay forma de establecer @include mixin(); en variable? yo probamos este¿Variable de ajuste a @mixin en Sass?

@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 

Respuesta

25

No estoy al tanto de cualquier manera de hacerlo específicamente, pero si usted está tratando de secar simplemente la configuración de ese tipo particular de gradiente, se podría escribir un contenedor para que mixin :

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

Editar:

Here hay una lista de tipos de datos soportados por variables SASS. No se incluyen ni las llamadas mixin, ni el resultado de ellas (reglas completas de CSS). También traté de tratar el include como una cadena e interpolarlo, pero eso solo funciona para CSS de resultado final, no para directivas adicionales.

+2

Thnx para la solución y para obtener información adicional. Realmente lo aprecio – FoxKllD

3
@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

Si está intentando establecer un valor devuelto a una variable SASS, debe usar @function, no @mixin. Esto me colgó por un tiempo y no estaba al tanto de @function. Por ejemplo ...

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

Por cierto, aunque esto no se refiere a lo que este usuario está buscando exactamente, esto es lo único que aparece en una búsqueda en Internet sobre la configuración de una var a un mixin así que Quería compartir esto aquí para que otros sepan qué hacer si esta situación aparece.

+0

Eso no ayudará con el caso de uso del OP ya que no esperan un solo valor de retorno. – cimmanon

+0

¿Por qué crearía una 'función' con valores codificados? Un poco derrota el punto eh? –

Cuestiones relacionadas