2012-09-20 4 views
25

Hiçbir şeye eşit olmayan bir değişken oluşturmaya çalışıyorum. Ben .. AşağıdakiSASS Değişkenler hiçbir şey eşit olarak nasıl ayarlanır?

$false:null; 
$false:" "; 

-ve-

Ne şudur ile kullanmak çalışıyorum ... Ben için iki değişken kullanıyorum

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

@include myMixin("", $myOtherVariable); 

denedi Bu örnek, ama ikiden fazla sahip olmayı planlıyorum.

Temel olarak ne yapmak istediğim, boş tırnak kullanmadan bir değişkeni hariç tutma seçeneğine sahip olmak. Ve $false: ""; ile sorun hala boş tırnak bekliyor. Bu yüzden SASS'e "sıfır/veya hiçbir şey" gösterecek bir şey var mı diye merak ediyorum. Boş olabileceğini düşündüm. Ancak bu durum böyle görünmüyor.

+1

'Null' gerçekten * hiçbir şey * değerdir, ancak yalnızca 3.2+ var: http: // chriseppstein .github.com/blog/2012/08/23/sass-3-2-yayınlandı/ – cimmanon

+0

@cimmanon Bilgi için teşekkürler .. Bir şans elde ettiğimde sürümümü iki kez kontrol edeceğim. –

cevap

40

null veya false çalışacak (null Sass son sürümünde yenidir). Her ikisi de senin örnek için çalışacak. null'un tek avantajı, bir özelliği ile kullanırsanız kaybolmasıdır.

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

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

Açıklama için teşekkürler ... NULL kullanımı ile ilgili sorularımı yanıtladığınızı söylemeye gerek yok ve sorun olmadan çalışıyor gibi görünüyor. İhtiyacım olmasaydı @include() 'da bir değişkeni geçmeden ulaşabileceğimi umuyordum. Ama maxbeaty'nin postunda bahsettiğim gibi, bu bir seçenek gibi görünmüyor. Null, Null, nil ile sorunlara koşarken daha iyi çalışır. Bu yüzden yardımlarınız için teşekkürler. –

+1

Yine yanlış. :) Bu bir seçenek. Yukarıdaki kodla, '$ myVariable' argümanı için 'false' değerini varsayılan değer olarak ayarladınız. Tüm argümanlarınız için varsayılan ayarlarınız olduğu sürece, içerme ile birlikte hiçbir şey iletmeye gerek yoktur. Basitçe, '@include myMixin; '. Yalnızca varsayılan olmayan argümanların içerme satırından geçirilmesi gerekir. (Gerekli argümanlar argüman listesinde isteğe bağlı olanlardan önce gelmek zorundadır) –

+0

Tamam, bu mantıklı.İsteğe bağlı olarak isteğe bağlı olduğunu biliyordum ama böyle varsayılan argümanları belirleyebileceğinizi bilmiyordum. Bu şimdiki karışımınıza bakmakta daha mantıklı. –

-1

Sass, null yerine nil kullanan ruby ​​dilinde yazılmıştır.

@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

Burada durumun böyle olduğundan emin değilim. Bunun ne işe yaradığına bakılmaksızın bence bu işe yarayacaktır. Mesela "nil" yerine "blah" kelimesini kullansaydım yine de aynı sonucu verirdi. Belki burada bir şey özlüyorum. –

+0

'nil 'öğesinden alıntı yapmadığınızdan emin olun; ('nil' vs' "nil" ') – maxbeatty

+5

' null' Sass, ve belgelerindeki 'nil'den söz edilmez. Bkz. Http://sass-lang.com/docs/yardoc/Sass/Script/Null.html –

0

değişkeni ayarlama 'yanlış'

$false: false;

+0

Yanlış, Nothing ile aynı şeylere bile yakın değildir. Ayrıca, mevcut cevap zaten Yanlış senaryoyu kapsamaktadır. – cimmanon