2013-01-21 9 views
26

ich diesen mixin haben eine einfache CSS3 linearen Gradienten zu handhaben:Skipping ein optionales Argument in Sass mixin

@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 ist die Abkürzung für 'Richtung'.

Wenn ich brauche $ie-filters ‚true‘ zu machen, und ich brauche nicht die $dir/$dir-webkit Standardwerte ich immer noch, sie zu neu deklarieren müssen sich ändern, was natürlich nicht sehr trocken und optimal ist, so würde ich tun, dies:

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

Als ich dies nur tun wollen:

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

Wie überspringen ich Argumente i Auf diese Weise, wenn ein Mixin angerufen wird?

PS, wenn Sie über das $dir-webkit Argument mich fragen, es für Webkit ist, als es noch nicht die neue Verlauf Syntax nicht verarbeiten (siehe: http://generatedcontent.org/post/37949105556/updateyourcss3 ->New Gradient Syntax), muss die Richtung das Gegenteil von dem sein, Standardsyntax.

+0

Haben Sie versucht, Null zu übergeben? – markus

+0

Ich habe das gerade versucht, aber es gibt keinen Wert aus, wenn 'null' verwendet wird:' @include linear-gradient (# f60, # c00, null, null, wahr); 'kompiliert zu:' background-image: -webkit -linear-gradient (, # ff6600, # cc0000); background-image: linear-gradient (bis, # ff6600, # cc0000); ' –

+0

versuche dies http://bravedick.github.com/mooxins/ mixins. nein ie Filter, zw. – bravedick

Antwort

44

ab SASS 3.1 Sie benannten Argumente, das zu tun passieren kann:

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

Der Rest Verzug.

+0

'$ from' und' $ to' werden niemals Standardwerte haben, aber selbst wenn sie es taten, hilft es immer noch nicht, wenn ich ein Argument wie oben beschrieben überspringen möchte. –

+1

Was? Ich habe dir nur gezeigt, wie es funktioniert, genau das hast du gefragt. Sie wollen das 3. und 4. Argument überspringen und so wird es gemacht. – markus

+4

Vielleicht verstehst du meine Antwort nicht. So rufst du den Mix mit deinen Werten an. Sie können die beiden anderen Parameter weglassen, solange Sie benannte Argumente übergeben. – markus