如何在Less中动态声明变量?

时间:2013-06-11 22:44:32

标签: less

我正在尝试创建一个较少的帮助文件,只为我创建一堆较少的变量。我想尝试使用参数化mixins来做到这一点,这样我就可以减少重复容易出错的代码量。我一直在寻找答案,但还没有发现任何东西,所以只是想知道这是否可行。

我的目标:

定义一组以某种格式命名的变量,例如

@MyVar-foo1-bar1
@MyVar-foo1-bar2
@MyVar-foo1-bar...
@MyVar-foo1-barN
@MyVar-foo2-bar1
@MyVar-foo2-bar2
@MyVar-foo2-bar...
@MyVar-foo2-barN
@MyVar-foo(...)-bar(xxx)
@MyVar-fooN-barN

鉴于我可能有数百个变量要声明,这很快就会变得乏味。通过使用mixins迭代,显然可以极大地简化它。例如..

(伪代码只是因为我不能使它工作)

.mymixin (@part1){
    @{MyVar-@{part1}-bar1: value-one;
    @{MyVar-@{part1}-bar2: value-two;
    @{MyVar-@{part1}-bar3: value-three;
    @{MyVar-@{part1}-bar4: value-four;
}
.mymixin(foo1);
.mymixin(foo2);

应导致无输出,但应定义以下变量供以后使用:

@MyVar-foo1-bar1: value-one
@MyVar-foo1-bar2: value-two
@MyVar-foo1-bar3: value-three
@MyVar-foo1-bar4: value-four
@MyVar-foo2-bar1: value-one
@MyVar-foo2-bar2: value-two
@MyVar-foo2-bar3: value-three
@MyVar-foo2-bar4: value-four

手动创建这些(ugh)后,我可以使用mixins轻松地使用它们,例如。

.useMyVars(@myClass) {
    (~".@{myClass} #id1"){
        cssparameter:~"@{MyVar-@{myClass}bar1}";
    }
    (~".@{myClass} #id2"){
        cssparameter:~"@{MyVar-@{myClass}bar2}";
    }
    (~".@{myClass} #id3"){
        cssparameter:~"@{MyVar-@{myClass}bar3}";
    }
    (~".@{myClass} #id4"){
        cssparameter:~"@{MyVar-@{myClass}bar4}";
    }
}
.useMyVars(foo);

结果:

.foo #id1{
    cssparameter:value1;
}
.foo #id2{
    cssparameter:value2;
}
.foo #id3{
    cssparameter:value3;
}
.foo #id4{
    cssparameter:value4;
}

现在,我尝试使用字符串转义等,但每当我在':'运算符的左侧使用它时,我只是得到一个解析错误。

要么无法完成,要么我遗失了一些东西:)

0 个答案:

没有答案