2012-07-15 13 views
11

Câu hỏi nhanh về Sass (hy vọng) ở đây. Bạn có thể kiểm tra sự tồn tại của mixin không? ví dụ.Bạn có thể kiểm tra xem mixin có tồn tại không?

@if thumbnail-mixin {} @else { //define mixin }. 

Lý tưởng nhất tôi muốn sử dụng @unless, nhưng chỉ tồn tại trên một ngã ba. Tôi biết bạn có thể ghi đè lên một mixin nhưng tôi đang suy nghĩ nhiều hơn nếu bạn có thể có một mixin mặc định, thay vì phải chỉ định N biến trong mọi trường hợp.

Trả lời

6

Sass hiện không có chức năng gốc để xác định xem mixin có tồn tại hay không.

https://github.com/nex3/sass/issues/561#issuecomment-14430978

Bạn có thể tạo một hàm Sass viết bằng Ruby:

def mixin_exists(mixin_name) 
    if(environment.mixin(mixin_name.value)) 
     Sass::Script::Bool.new(true) 
    else 
     Sass::Script::Bool.new(false) 
    end 
end 

Hoặc bạn có thể sử dụng sass-utilities Compass extension, trong đó có chức năng này bao gồm.

16

Phiên bản mới nhất của Sass (v3.3.0) có chức năng mixin-exists:

.foo { 
    @if mixin-exists(mymixin) { 
    exists: true; 
    } 
    @else { 
    exists: false; 
    } 
} 

Sass v3.3 bổ sung kiểm tra sự tồn tại khác quá:

variable-exists($name) 
global-variable-exists($name) 
function-exists($name) 

More on Sass v3.3.

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