我正在尝试在 LESS CSS 中开发一个“主题引擎”,以允许客户使用最少的变量更新其网站的配色方案。目前我们有一个变量文件,我们在其中分配默认集,为了简化用户输入的数量,我们经常使用变亮和变暗功能,例如
// snippet 1
@grayLight: #999999;
@grayLighter: darken(@grayLight, 10%);
有没有一种方法可以将变亮/变暗函数分配为变量?这样我们只需要指定色调对比度(暗/亮或亮/暗):
// snippet 2 (does not work)
@contrastVerb: darken;
@linkColorHover: @contrastVerb(@linkColor, 10%);//#FFA500;
我尝试使用 Javascript 括号表示法来调用函数请求,例如
// snippet 3 (does not work)
@linkColorHover: `window[@contrastVerb]`(@linkColor, 10%);//#FFA500;
一个选项是模式匹配:
// snippet 4
@tone: light;
.linkColor(light, @color){
color: lighten(@color, 10%);
}
.linkColor(dark, @color){
color: darken(@color, 10%);
}
.linkColor(@tone, #f17900);
然而,片段 4 将比片段 2 或 3 更冗长,并且会导致生成大量额外代码。
提前致谢!