在Sass中调用没有返回值的函数

时间:2016-03-06 10:57:54

标签: sass

我希望能够检查两种颜色的对比度,并在对比度低于某个阈值时发出警告。这是我的代码:

@function contrast-check($color1, $color2, $threshold: 4.5) {
  @if contrast($color1, $color2) < $threshold {
    @warn 'contrast #{$contrast} between #{$color1} and #{$color2} too low!';
  }
}

麻烦的是我无法从任何地方调用此功能。这是我试过的:

  • contrast-check(#fff, #000); - 错误:'...'后无效的CSS:预期的1个选择器或at-rule,是“rast-check(#fff ...”
  • $: contrast-check(#fff, #000); - 错误:函数对比度检查未返回值
  • * {test: contrast-check(#fff, #000);} - 错误:函数对比度检查未返回值

我可以将功能转换为混音。然后就可以按预期调用它。但是mixin不能用于其他功能。

另一种选择可能是返回任意值。这样可以工作,但也会非常hacky,因为每次调用函数时都必须将该值赋给一个抛弃变量。

有一个很好的方法吗?

1 个答案:

答案 0 :(得分:2)

不幸的是,这是不可能的,这里有关于项目的Git问题页面的讨论。

https://github.com/sass/sass/issues/1348

你可以从功能中返回null但似乎SASS的创造者不想让你做这种事情所以最好的选择就是使用mixin,即使你不混合任何事情。我知道它在语义上是错误的但是......

这个问题让我觉得SASS不能完成我需要做的工作,我现在正在编写一个postcss插件来完成这项工作。不知道这条路线是否适合你。