测试是否定义了Sass函数

gle*_*ebm 4 sass

如何测试Sass函数是否存在?


我有一个使用自定义Sass函数的Sass包.但是,在Ruby之外(例如libsass),可能无法定义该函数并提供回退:

url: if($bootstrap-sass-asset-helper, twbs-font-path('name.eot'), 'name.eot')

我想$bootstrap-sass-asset-helper根据是否twbs-font-path声明将值设置为true或false .

Kat*_*ieK 10

当前版本的Sass具有一个function-exists功能. 完整示例:

.foo {
  @if function-exists(myfunc) {
    exists: true;
  }
  @else {
    exists: false;
  }
}
Run Code Online (Sandbox Code Playgroud)

这是v3.3(2014年3月)的新功能,因此您可能需要更新Sass gem才能使用它.

Sass v3.3也添加了其他存在测试:

variable-exists($name)
global-variable-exists($name)
mixin-exists($name)
Run Code Online (Sandbox Code Playgroud)

更多关于Sass v3.3.


cim*_*non 6

萨斯没有这样的功能.如果你需要,你可以像这样捏造它:

@debug if(foo() == unquote("foo()"), false, true); // false

@function foo() {
    @return true;
}

@debug if(foo() == unquote("foo()"), false, true); // true
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为当你调用一个不存在的函数时,Sass假定你可能正在编写有效的CSS(calc,linear-gradient,attr等).当发生这种情况时,你得到的是一个字符串.因此,如果函数存在,则获得函数的结果而不是字符串.所以foo() == unquote("foo()")只是检查你是否有字符串.

相关: 你能测试一下mixin是否存在?