2012-09-20 9 views
25

Sto provando a creare una variabile che è uguale a niente. Ho provato quanto segue ..SASS Come impostare una variabile uguale a nulla?

$false:null; 

-e-

$false:" "; 

Quello che sto cercando di utilizzarlo con questo è ...

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

@include myMixin("", $myOtherVariable); 

Sto usando due variabili per questo esempio, ma ho intenzione di avere più di due.

Fondamentalmente quello che voglio fare è avere l'opzione di escludere una variabile senza dover usare virgolette vuote. E il problema con $false: ""; è che si aspetta ancora virgolette vuote. Quindi mi chiedo se c'è qualcosa di costruito in SASS per designare "null/o nulla". Ho pensato che potrebbe essere nullo. Ma non sembra essere il caso ..

+1

'null' è davvero il * nulla * valore, ma esiste solo in 3.2+: http: // chriseppstein .github.com/blog/2012/08/23/sass-3-2-is-released/ – cimmanon

+0

@cimmanon Grazie per le informazioni .. controllerò la mia versione quando ne avrò la possibilità. –

risposta

40

null o false funzionerà (null è nuovo nella versione più recente del Sass). Entrambi funzioneranno per il tuo esempio. L'unico vantaggio di null è che scompare se lo si utilizza con una proprietà.

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

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

Grazie per il chiarimento ... Inutile dire che hai risposto alle mie domande sull'utilizzo di NULL e sembra funzionare senza problemi. Speravo di poter passare senza passare una variabile nel @include() se non ne avessi avuto bisogno. Ma come ho detto sul post di maxbeaty, non sembra che sia un'opzione. Ad ogni modo, Null funziona meglio perché mi sono imbattuto in problemi con zero. Quindi ancora grazie per il vostro aiuto. –

+1

Di nuovo sbagliato. :) Questa è un'opzione. Con il codice sopra, hai impostato 'false' come valore predefinito per l'argomento' $ myVariable'. Finché hai impostato i valori predefiniti per tutti i tuoi argomenti, non è necessario passare nulla insieme all'inserimento. Semplicemente '@include myMixin;'. Solo gli argomenti senza un valore predefinito devono essere passati con la riga di inclusione. (Gli argomenti obbligatori devono anche venire prima di quelli opzionali nell'elenco degli argomenti) –

+0

Ok, è logico.Sapevo di facoltativo dopo richiesto, ma non sapevo che si potevano impostare argomenti predefiniti come quello. Ha più senso guardare il tuo mixin ora. –

-1

Sass è scritto in ruby ​​che utilizza nil invece di null.

@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

Non sono sicuro che sia il caso qui. Penso che questo funzionerebbe a prescindere da ciò che ho impostato $ false .. Ad esempio, se ho usato la parola "blah" invece di "nil", restituirebbe comunque lo stesso risultato. Forse mi manca qualcosa qui. –

+0

Assicurati di non citare 'nil' dato che diventerà una stringa. ('nil' vs' "nil" ') – maxbeatty

+5

' null' è corretto Sass, e non c'è menzione di 'nil' nella documentazione. Vedi: http://sass-lang.com/docs/yardoc/Sass/Script/Null.html –

0

impostare la variabile su 'false'

$false: false;

+0

False non è nemmeno vicino alla stessa cosa di Nothing. Inoltre, la risposta esistente copre già lo scenario Falso. – cimmanon

Problemi correlati