2012-09-20 9 views
25

Estoy tratando de crear una variable que sea igual a nada. He intentado el siguiente ..SASS ¿Cómo establecer una variable para que no importe nada?

$false:null; 

-y-

$false:" "; 

Lo que estoy tratando de utilizarlo con esto ... es

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

@include myMixin("", $myOtherVariable); 

estoy usando dos variables para este ejemplo, pero planeo tener más de dos.

Básicamente lo que quiero hacer es tener la opción de excluir una variable sin tener que usar comillas vacías. Y el problema con $false: ""; es que todavía espera citas vacías. Entonces me pregunto si hay algo incorporado en SASS para designar "nulo/o nada". Pensé que podría ser nulo. Pero eso no parece ser el caso ...

+1

'null' es de hecho el * * nada de valor, pero sólo existe en 3.2+: http: // chriseppstein .github.com/blog/2012/08/23/sass-3-2-is-released/ – cimmanon

+0

@cimmanon Gracias por la información ... Revisaré mi versión cuando tenga oportunidad. –

Respuesta

40

null o false funcionará (null es nuevo en la última versión de Sass). Ambos funcionarán para tu ejemplo. La única ventaja de null es que desaparece si la usa con una propiedad.

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

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

Gracias por la aclaración ... No hace falta decir que ha respondido mis preguntas sobre el uso de NULL y parece que funciona sin problemas. Esperaba poder pasar sin pasar una variable en el @include() si no lo necesitaba. Pero como mencioné en la publicación de maxbeaty, no parece que sea una opción. De todos modos, Null funciona mejor ya que estaba teniendo problemas con nil ... Así que de nuevo gracias por tu ayuda. –

+1

Incorrecto. :) Esa es una opción. Con el código anterior, has establecido 'false' como el valor predeterminado para el argumento' $ myVariable'. Siempre que tenga los valores predeterminados establecidos para todos sus argumentos, no es necesario pasar nada junto con el include. Simplemente '@include myMixin;'. Solo los argumentos sin un valor predeterminado tendrán que pasarse con la línea de inclusión. (Los argumentos obligatorios también deben aparecer antes que los opcionales en la lista de argumentos) –

+0

Bien, eso tiene sentido.Sabía que era opcional después de que fuera necesario, pero no sabía que podía establecer argumentos predeterminados como ese. Eso tiene más sentido mirar tu mixin ahora. –

-1

Sass está escrito en ruby, que usa nil en lugar de 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

No estoy seguro de que este sea el caso aquí. Creo que esto funcionaría independientemente de lo que establezca $ false. Por ejemplo, si utilizara la palabra "blah" en lugar de "nil", seguiría produciendo el mismo resultado. Tal vez me estoy perdiendo algo aquí. –

+0

Asegúrate de no citar 'nil' porque eso lo convertirá en una cadena. ('nil' vs' "nil" ') – maxbeatty

+5

' null' es correcto Sass, y no hay mención de 'nil' en la documentación. Ver: http://sass-lang.com/docs/yardoc/Sass/Script/Null.html –

0

Establecer la variable de 'falso'

$false: false;

+0

False no está ni cerca de lo mismo que Nothing. Además, la respuesta existente ya cubre el escenario False. – cimmanon

Cuestiones relacionadas