2012-09-20 28 views
25

Tôi đang cố gắng tạo biến không bằng gì cả. Tôi đã thử như sau ..SASS Làm thế nào để thiết lập một biến để bằng không có gì?

$false:null; 

-and-

$false:" "; 

Những gì tôi đang cố gắng sử dụng nó với là thế này ...

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

@include myMixin("", $myOtherVariable); 

Tôi đang sử dụng hai biến cho ví dụ này, nhưng tôi dự định có nhiều hơn hai.

Về cơ bản những gì tôi muốn làm là có tùy chọn loại trừ biến mà không phải sử dụng dấu ngoặc kép trống. Và vấn đề với $false: ""; Là nó vẫn mong đợi dấu ngoặc kép trống. Vì vậy, tôi tự hỏi nếu có cái gì đó được xây dựng vào SASS để chỉ định "null/hoặc không có gì". Tôi nghĩ rằng nó có thể là null. Nhưng dường như không phải như vậy.

+1

'Null' thực sự là không có gì * * giá trị, nhưng nó chỉ tồn tại trong 3.2+: http: // chriseppstein .github.com/blog/2012/08/23/sass-3-2-được phát hành/ – cimmanon

+0

@cimmanon Cảm ơn bạn đã thông tin .. Tôi sẽ kiểm tra lại phiên bản của mình khi có cơ hội. –

Trả lời

40

null hoặc false sẽ làm việc (null là mới trong phiên bản mới nhất của Sass). Cả hai sẽ làm việc cho ví dụ của bạn. Lợi thế duy nhất của null là nó biến mất nếu bạn sử dụng nó với một thuộc tính.

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

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

Cảm ơn bạn đã làm rõ ... Không cần phải nói bạn đã trả lời câu hỏi của tôi về việc sử dụng NULL và có vẻ như nó hoạt động mà không có vấn đề gì. Tôi đã hy vọng tôi có thể nhận được bằng cách không đi qua một biến trong @include() nếu tôi không cần nó. Nhưng như tôi đã đề cập trên bài viết của maxbeaty nó không có vẻ như đó là một lựa chọn. Dù sao, Null hoạt động tốt hơn khi tôi đã chạy vào các vấn đề với nil .. Vì vậy, một lần nữa cảm ơn sự giúp đỡ của bạn. –

+1

Sai lần nữa. :) Đó là một lựa chọn. Với đoạn mã trên, bạn đã đặt 'false' làm giá trị mặc định cho đối số' $ myVariable'. Miễn là bạn có mặc định đặt cho tất cả các đối số của bạn, không cần phải vượt qua bất cứ điều gì cùng với bao gồm. Chỉ đơn giản là '@include myMixin;'. Chỉ các đối số không có mặc định sẽ phải được chuyển qua dòng bao gồm. (Yêu cầu args cũng phải đến trước những tùy chọn trong danh sách đối số) –

+0

Được rồi.Tôi biết về tùy chọn sau khi yêu cầu nhưng tôi không biết bạn có thể đặt đối số mặc định như thế. Điều đó có ý nghĩa hơn khi xem xét mixin của bạn ngay bây giờ. –

-1

Sass được viết bằng ruby ​​sử dụng nil thay vì 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

Tôi không chắc chắn đó là trường hợp ở đây. Tôi nghĩ rằng điều này sẽ làm việc không có vấn đề gì tôi đặt $ false để .. Ví dụ nếu tôi sử dụng từ "blah" thay vì "nil" nó vẫn sẽ làm cho kết quả tương tự. Có lẽ tôi đang thiếu một cái gì đó ở đây. –

+0

Hãy chắc chắn rằng bạn không trích dẫn 'nil' vì điều đó sẽ làm cho nó thành một chuỗi. ('nil' vs' "nil" ') – maxbeatty

+5

' null' là đúng Sass, và không có đề cập đến 'nil' trong tài liệu. Xem: http://sass-lang.com/docs/yardoc/Sass/Script/Null.html –

0

Đặt biến để 'false'

$false: false;

+0

Sai thậm chí không gần giống với Không có gì. Ngoài ra, câu trả lời hiện có đã bao gồm kịch bản Sai. – cimmanon

Các vấn đề liên quan