更少的CSS保护表达式匹配字符串

更少的CSS保护表达式匹配字符串,css,string,less,guard,Css,String,Less,Guard,我想对某些元素应用背景色,以防值是字符串“red”。我在网上搜索,发现我不能在字符串上使用,=和=的行为不同 .myfunction(@PLACEHOLDER_COLOR) when (@PLACEHOLDER_COLOR = 'red') { background-color:red; } .bullet:hover, .bullet.selected {.myfunction(@COLOR_SETTING)} 有人知道如何检查该值是否等于字符串吗? 谢谢。注意您的传入值 你所拥有的

我想对某些元素应用背景色,以防值是字符串“red”。我在网上搜索,发现我不能在字符串上使用,=和=的行为不同

.myfunction(@PLACEHOLDER_COLOR) when (@PLACEHOLDER_COLOR = 'red') {
  background-color:red;
}


.bullet:hover,
.bullet.selected
{.myfunction(@COLOR_SETTING)}
有人知道如何检查该值是否等于字符串吗? 谢谢。

注意您的传入值 你所拥有的是正确的少。但是,您在调用它时传递的值可能不是

这将起作用

@COLOR_SETTING: 'red'; // or "red"
这不会(因为它不是字符串“red”,而是
red的较小颜色值
):

其他选择 如果要传入颜色值而不是字符串,请将混音更改为:

.myfunction(@PLACEHOLDER_COLOR) when (@PLACEHOLDER_COLOR = red) {
  background-color:red;
}
它还可以接受输入,例如
#f00

如果您想要接受字符串或颜色输入,这将起作用(但如果无法将值转换为颜色,则抛出的错误会更少):


我向@COLOR\u设置发送了其他值,这就是防护失败的原因。非常感谢。
.myfunction(@PLACEHOLDER_COLOR) when (@PLACEHOLDER_COLOR = red) {
  background-color:red;
}
.myfunction(@PLACEHOLDER_COLOR) when (color("@{PLACEHOLDER_COLOR}") = red) {
  background-color:red;
}