2012-04-05 14 views
14

C'è un modo per impostare @include mixin(); in variabile? Ho provato questoImpostazione della variabile su @mixin in 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 

risposta

25

io non sono a conoscenza di alcun modo per farlo specifico, ma se si sta cercando di asciugare solo le impostazioni su quel particolare tipo di sfumatura, si potrebbe scrivere un mixin wrapper per esso :

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

Edit:

Here 'un elenco dei tipi di dati supportati da variabili Sass. Né i mixin call, né il risultato di essi (intere regole CSS), sono inclusi. Ho anche provato a considerare l'inclusione come stringa e ad interpolarla, ma funziona solo con i CSS di fine risultato, non con altre direttive.

+2

Thnx per la soluzione e per ulteriori informazioni! Lo apprezzo davvero – 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

Se si sta tentando di impostare un valore restituito a una variabile SASS, è necessario utilizzare funzioni @, non @mixin. Questo mi ha bloccato per un po 'e non ero a conoscenza di @function. Per esempio ...

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

BTW, anche se questo non affronta ciò che l'utente sta cercando esattamente, questo è l'unica cosa che si apre su una ricerca su internet su come impostare un var a un mixin così ho volevo condividere questo qui per gli altri per sapere cosa fare se si verifica questa situazione.

+0

Questo non aiuta il caso d'uso dell'OP poiché non si aspettano un singolo valore di ritorno. – cimmanon

+0

Perché dovresti creare una 'funzione' con valori hardcoded? Kinda sconfigge il punto eh? –

Problemi correlati