你可以测试mixin是否存在?

问题描述:

萨斯快速问题(希望)在这里。你可以测试一个mixin的存在吗?例如你可以测试mixin是否存在?

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

理想情况下我会使用@unless,但只存在于一个叉。我知道你可以覆盖一个mixin,但是如果你可以有一个默认的mixin,而不是每次都需要指定N个变量,我会考虑更多。

Sass当前没有本地功能来确定mixin是否存在。

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

您可以创建一个使用Ruby编写一个函数的Sass:

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

或者你可以使用sass-utilities Compass extension,它有这个功能包括在内。

最近萨斯(v3.3.0)的版本有一个mixin-exists功能:

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

萨斯V3.3增加了其他存在测试过:

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

More on Sass v3.3.