我有这段代码:
// Color settings
.setCat(@x) {
.cat@{x} {
.menu-link {
&.selected, &:hover { background: ~@{"catColor@{x}"}; }
&:hover:after { border-top-color: ~@{"catColor@{x}"}; }
&:only-child:after { border-top-color: transparent; }
}
.menu-link-submenu { background: ~@{"catColor@{x}"}; }
}
}
.setCat(1);
我希望你能看到我想要做的事情。我想要@catColor1输出,然后LESS将编译成存储在该变量中的十六进制颜色。
这可能吗?还有更好的方法吗?
答案 0 :(得分:3)
您需要将两个调用嵌套到字符串中。我已经完成了处理,只需要一个新的变量useColor
(你不必做,我认为它看起来更干净):
.setCat(@x) {
.cat@{x} {
@useColor: ~"@{catColor@{x}}";
.menu-link {
&.selected, &:hover { background: @useColor; }
&:hover:after { border-top-color: @useColor; }
&:only-child:after { border-top-color: transparent; }
}
.menu-link-submenu { background: @useColor; }
}
}
所以假设没有:
@catColor1: #fff;
@catColor2: #aaa;
.setCat(1);
.setCat(2);
制作此CSS:
.cat1 .menu-link.selected,
.cat1 .menu-link:hover {
background: #ffffff;
}
.cat1 .menu-link:hover:after {
border-top-color: #ffffff;
}
.cat1 .menu-link:only-child:after {
border-top-color: transparent;
}
.cat1 .menu-link-submenu {
background: #ffffff;
}
.cat2 .menu-link.selected,
.cat2 .menu-link:hover {
background: #aaaaaa;
}
.cat2 .menu-link:hover:after {
border-top-color: #aaaaaa;
}
.cat2 .menu-link:only-child:after {
border-top-color: transparent;
}
.cat2 .menu-link-submenu {
background: #aaaaaa;
}