我正在尝试通过实际为它们分配一个复合名称来创建一个在 LESS CSS 中动态定义变量的 mixin。
简化的用例(不是真正的用例):
.define(@var){
@foo{var}: 0;
}
然后人们会这样称呼mixin:
.define('Bar'){
@fooBar: 0;
}
由于在使用选择器名称时可以进行这种字符串插值,所以我想知道变量名称是否也可以这样做;到目前为止,我尝试过的各种语法都没有运气(除了上述之外,我尝试了转义、引用、使用~
前缀等等)。
编辑
我又尝试了一件事情,我觉得我可能已经接近了;但我遇到了 LESS 语法的奇怪之处。如果我写这个:
.define(@var){
#namespace {
@foo: @var;
}
}
然后这样称呼它:
.define(0)
然后我可以@foo
以通常的命名空间方式使用:
.test {
#namespace;
property: @foo; /* returns 0 */
}
但是,这不适用于字符串插值选择器:
.define(@var, @ns){
#@{ns} {
@foo: @var;
}
}
.define(0, namespace);
.test {
#namespace;
property: @foo;
}
上面的代码给了我以下错误:
名称错误:#namespace 未定义
但是,字符串插值是成功且有效的。事实上,如果我拿掉这.test
部分并修改上面的内容以输出一个测试属性,我可以看到 CSS 被正确解析。我是说:
.define(@var, @ns){
#@{ns} {
@foo: @var;
prop: @foo;
}
}
.define(0, namespace);
输出以下 CSS:
#namespace {
prop: 0;
}