如何測試Sass功能是否存在?測試是否定義了Sass功能
我有一個使用自定義Sass功能的Sass軟件包。然而,紅寶石(例如libsass)外,該功能可以不定義和提供了一種回退:
url: if($bootstrap-sass-asset-helper, twbs-font-path('name.eot'), 'name.eot')
我想的$bootstrap-sass-asset-helper
值設置爲取決於twbs-font-path
是否被聲明真或假。
如何測試Sass功能是否存在?測試是否定義了Sass功能
我有一個使用自定義Sass功能的Sass軟件包。然而,紅寶石(例如libsass)外,該功能可以不定義和提供了一種回退:
url: if($bootstrap-sass-asset-helper, twbs-font-path('name.eot'), 'name.eot')
我想的$bootstrap-sass-asset-helper
值設置爲取決於twbs-font-path
是否被聲明真或假。
薩斯的當前版本有function-exists
功能。 Full example:
.foo {
@if function-exists(myfunc) {
exists: true;
}
@else {
exists: false;
}
}
這是新功能,V3.3(2014年3月),所以你可能需要更新您的薩斯寶石利用它。
薩斯V3.3增加了其他存在測試過:
variable-exists($name)
global-variable-exists($name)
mixin-exists($name)
Sass沒有這樣的功能。如果你需要,你可以捏造這樣的:
@debug if(foo() == unquote("foo()"), false, true); // false
@function foo() {
@return true;
}
@debug if(foo() == unquote("foo()"), false, true); // true
這工作,因爲當你調用一個不存在的功能,薩斯假定您可以撰寫有效的CSS(計算,線性漸變,ATTR,等等。)。發生這種情況時,你得到的是一個字符串。所以如果函數存在,你會得到函數的結果而不是字符串。所以foo() == unquote("foo()")
只是檢查是否有字符串。
這太好了,謝謝你的提示! 3.3看起來很棒 – glebm