2012-09-20 17 views
25

Ich versuche eine Variable zu erstellen, die gleich Null ist. Ich habe das versucht folgendes ..SASS Wie setze ich eine Variable auf nichts?

$false:null; 

-und-

$false:" "; 

Was ich versuche, es zu benutzen, mit ist diese ...

@mixin myMixin($myVariable:"", $myOtherVariable){ 
    $false:null; 
    @if $myVariable == $false { 
     //do something 
    } 
    @if $myVariable != "" { 
     //do something else 
    } 
} 

@include myMixin("", $myOtherVariable); 

ich zwei Variablen verwenden für Dieses Beispiel, aber ich habe vor, mehr als zwei zu haben.

Grundsätzlich, was ich tun möchte, ist die Option, eine Variable auszuschließen, ohne leere Anführungszeichen verwenden zu müssen. Und das Problem mit $false: ""; ist, dass es immer noch leere Anführungszeichen erwartet. Ich frage mich also, ob etwas in SASS eingebaut ist, um "null/oder nichts" zu bezeichnen. Ich dachte, es könnte null sein. Aber das scheint nicht der Fall zu sein ..

+1

'Null' ist in der Tat die * nichts * Wert, aber es existiert nur in 3.2+: http: // chriseppstein .github.com/blog/2012/08/23/sass-3-2-is-released/ – cimmanon

+0

@cimmanon Danke für die Info .. Ich werde meine Version überprüfen, wenn ich eine Chance bekomme. –

Antwort

40

null oder false arbeiten (null ist neu in der aktuellen Version von Sass). Beides wird für Ihr Beispiel funktionieren. Der einzige Vorteil von null ist, dass es verschwindet, wenn Sie es mit einer Eigenschaft verwenden.

@mixin myMixin($myVariable: false, $myOtherVariable: false){ 
    @if not $myVariable { 
    //do something 
    } @else { 
    //do something else 
    } 
} 

@include myMixin(false, $myOtherVariable); 
+0

Danke für die Klarstellung ... Unnötig zu sagen, dass Sie meine Fragen über die Verwendung von NULL beantwortet haben und es scheinbar ohne Probleme funktioniert. Ich hatte gehofft, ich könnte ohne eine Variable in der @include() übergeben, wenn ich es nicht brauchte. Aber wie ich schon bei Maxbeat's Post erwähnt habe, scheint das nicht eine Option zu sein. Wie auch immer, Null funktioniert besser, da ich auf Probleme mit Null stieß. Also nochmals vielen Dank für deine Hilfe. –

+1

Wieder falsch. :) Das ist eine Option. Mit dem obigen Code haben Sie 'false' als Standardwert für das' $ myVariable' Argument gesetzt. Solange Sie für alle Ihre Argumente Standardwerte festgelegt haben, müssen Sie nichts mit dem Include weiterleiten. Einfach '@include myMixin;'. Nur Argumente ohne Standard müssen mit der Include-Zeile übergeben werden. (Erforderliche Argumente müssen auch vor optionalen in der Argumentliste stehen) –

+0

Okay, das macht Sinn.Ich wusste über optionale nach Bedarf, aber ich wusste nicht, dass Sie solche Standard-Argumente festlegen können. Das macht jetzt mehr Sinn, wenn du dein Mixin ansiehst. –

-1

Sass ist in Rubin geschrieben, die nil anstelle von null verwendet.

@mixin myMixin($myVariable, $myOtherVariable){ 
    $false: nil; 
    @if $myVariable == $false{ 
    color: inherit; 
    } @else { 
    color: $myVariable; 
    } 
} 

p { 
    @include myMixin(nil, $myOtherVariable); 
} 

.red { 
    @include myMixin(red, $myOtherVariable); 
} 

Example on jsFiddle

+0

Ich bin mir nicht sicher, dass das hier der Fall ist. Ich denke, das würde funktionieren, egal was ich $ false eingestellt habe. Zum Beispiel, wenn ich das Wort "blah" anstelle von "nil" verwenden würde, würde es immer noch das gleiche Ergebnis liefern. Vielleicht vermisse ich hier etwas. –

+0

Stellen Sie sicher, dass Sie nicht "nil" angeben, da dies eine Zeichenfolge ergibt. ('nil' vs' "nil" ') – maxbeatty

+5

' null' ist richtig Sass, und es gibt keine Erwähnung von 'nil' in der Dokumentation. Siehe: http://sass-lang.com/docs/yardoc/Sass/Script/Null.html –

0

die Variable auf 'false'

$false: false;

+0

False ist nicht annähernd dasselbe wie Nothing. Außerdem deckt die vorhandene Antwort bereits das False-Szenario ab. – cimmanon

Verwandte Themen