2013-01-21 14 views
26

mam ten wstawek do obsługi prosty CSS 3 liniowy gradient:Pomijanie opcjonalny argument Sass wstawek

@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 skrót od „kierunek”.

Jeśli muszę dokonać $ie-filters „true” i nie trzeba zmieniać wartości $dir/$dir-webkit domyślne nadal muszę redeclare je co oczywiście nie jest bardzo suche i optymalna, więc będę musiał zrobić to:

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

Po prostu chcę to zrobić:

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

Jak mogę pominąć argumenty: i n w ten sposób podczas wywoływania mixin?

PS jeśli zastanawiasz się o $dir-webkit argumentu To dla Webkit, gdyż nadal nie obsługuje nową składnię gradientu (patrz: http://generatedcontent.org/post/37949105556/updateyourcss3 ->New Gradient składnia), kierunek musi być przeciwieństwem standardowa składnia.

+0

Czy próbowałeś podać wartość null? – markus

+0

Po prostu próbowałem, ale nie wyprowadza żadnej wartości, gdy 'null' jest używany:' @include linear-gradient (# f60, # c00, null, null, true); 'kompiluje do:' background-image: -webkit -linear-gradient (, # ff6600, # cc0000); background-image: linear-gradient (to, # ff6600, # cc0000); ' –

+0

spróbuj tego http://bravedick.github.com/mooxins/ mixins. no ie filters, btw. – bravedick

Odpowiedz

44

Począwszy od SASS 3.1 można przekazać nazwanych argumentów, aby to zrobić:

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

Reszta będzie domyślnym.

+0

'$ od' i' $ to' nigdy nie będą mieć wartości domyślnych, ale nawet jeśli to zrobi, to nadal nie pomoże, gdy chcę pominąć argument, który opisałem powyżej. –

+1

Co? Po prostu pokazałem ci, jak to działa, to było dokładnie to, o co prosiłeś. Chcesz pominąć trzeci i czwarty argument i tak to się dzieje. – markus

+4

Może nie rozumiesz mojej odpowiedzi. W ten sposób CALL mixin z wartościami. Możesz pominąć dwa pozostałe parametry, o ile przekazujesz określone argumenty. – markus

Powiązane problemy