你可以测试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)