【发布时间】:2014-08-28 10:13:09
【问题描述】:
评估的颜色字符串似乎不适用于某些内置的 LESS 函数。
我尝试过使用e() 和~"" 以及两者的任意组合。
我可能会为我的特殊情况找到一种解决方法,我只是想问一下这是否是预期的行为,或者我的推理是否有问题?任何见解都值得赞赏。
例如,这里的颜色是从评估的字符串创建的;请注意稍后添加的十六进制值中的“缺失”#:
.broken-mixin(@hexcode: '9719e1') {
@color: e("#@{hexcode}");
// this works as expected
background-color: @color;
// this does work too
.very-simple-mixin(@color);
// Undefined_methodError: error evaluating function `fade`:
// Object #<Object> has no method 'toHSL'
background-color: fade(@color,30%);
// SyntaxError: error evaluating function `red`:
// Cannot read property '0' of undefined
background-color: rgba(red(@color), green(@color), blue(@color), 0.5);
}
否则,内置函数通常与 mixins 中的变量一起工作,例如:
.mixin-works(@myColor: #00ff00) {
// works just fine
background-color: fade(@myColor,30%);
// or this, works too
background-color: rgba(red(@myColor), green(@myColor), blue(@myColor), 0.5);
}
我错过了什么?
【问题讨论】:
-
将评估的字符串转换为
color对象,如background-color: fade(color("@{color}"),30%);将起作用。我认为这是因为fade函数需要颜色对象而不是字符串作为输入。
标签: css string less evaluation