我正在使用node-sass并尝试构建一组易于重新定义的样式,这意味着,例如,更改一种颜色将更新其他颜色。
我有一个功能,它采用一种颜色(背景颜色),确定亮度,并输出预设的暗色或浅色作为文本颜色。我之前使用过相同的功能,效果很好。它包含在sass文件中,并且已经测试它是否有效。
@function color-contrast($color) {
@if (lightness($color) > 50) {
@return $color-text-dark; //if the background is more than 50 lightness, return the dark colour
}
@else {
@return $color-text-light; //if not, return the light colour
}
}
但是,我现在尝试在变量声明中使用此函数。所以我有
$contentbox-text-color: color-contrast($bg-color) ;
($ bg-color,$ color-text- etc在表格的前面设置)
问题是,无论我在哪里使用$ contentbox-text-color,我都将其视为颜色值
color-contrast(blue);
(其中"蓝色"是$ bg-color值) - 而不是函数的结果,我希望看到它。我已尝试插入如下所示的函数,但结果是相同的
$contentbox-text-color: #{color-contrast($bg-color)} ;
我需要通过变量访问此函数,然后我使用变量(/结果颜色)作为mixin的参数,以及其他各种地方。
有谁知道有什么方法可以实现我想做的事情?我无法找到有关在变量中使用函数的任何信息,因此我不知道这是不可能的,或者我是否只是缺少某些语法工作正常!
谢谢:)
快速更新:如果我直接在mixin中将函数作为参数调用,则编译正确,但理想情况下我希望能够简单地使用变量名,以便可以在整个过程中使用相同的变量(如果由于某种原因它改变了,这是可能的,那么必须去每个mixin并更新参数而不是简单地依赖变量会很痛苦!)