在我的项目中,我使用4种颜色主题,使用此功能,我想自动分配变量中包含的特定颜色值,我还想使用变量的名称将其分配给类。
// the variables
@peach: 3399cc;
@green: ff00CC;
@orange: FF0033;
@yellow: EE0033;
@list: @peach, @green, @orange, @yellow;
//我的LESS功能
它使用变量值生成类名: ex:bsq3399cc 我希望类名与变量名相同:ex bsq-peach
我正在使用.for功能,如此处所述。 https://github.com/seven-phases-max/less.curious/blob/master/articles/for-each.md
.bsq {
.for(@list); .-each(@name) {
&@{name} {
@color: color("#@{name}");
li& { background: @color; }
li& strong { background:lighten(@color, 10%); }
li& i { background:lighten(@color, 20%); }
}
}
}
.for mixin //
// ............................................................
// .for
.for(@i, @n) {.-each(@i)}
.for(@n) when (isnumber(@n)) {.for(1, @n)}
.for(@i, @n) when not (@i = @n) {
.for((@i + (@n - @i) / abs(@n - @i)), @n);
}
// ............................................................
// .for-each
.for(@array) when (default()) {.for-impl_(length(@array))}
.for-impl_(@i) when (@i > 1) {.for-impl_((@i - 1))}
.for-impl_(@i) when (@i > 0) {.-each(extract(@array, @i))}
我使用的HTML代码就在这里。
<ul class="testing">
<li class="bsq3399cc"><strong>1</strong><i>10</i></li>
<li class="bsqff00CC"><strong>2</strong><i>20</i></li>
<li class="bsqFF0033"><strong>3</strong><i>30</i></li>
<li class="bsqEE0033"><strong>4</strong><i>40</i></li>
</ul>
答案 0 :(得分:1)
嗯,你在代码片段中的错误是你实际上没有提供那些&#34;名称&#34;对于类(即peach
,green
,orange
,yellow
),但只有十六进制颜色值。
请注意:
// the variables
@peach: 3399cc;
@green: ff00CC;
@orange: FF0033;
@yellow: EE0033;
@list: @peach, @green, @orange, @yellow;
@list
等于3399cc, ff00CC, FF0033, EE0033
。
我猜你真正的意思是这样的:
@peach: #3399cc;
@green: #ff00CC;
@orange: #FF0033;
@yellow: #EE0033;
@list: 'peach', 'green', 'orange', 'yellow';
li.bsq- {
.for(@list); .-each(@name) {
@name_: e(@name);
@color: @@name;
&@{name_} {
background: @color;
strong {background: lighten(@color, 10%)}
i {background: lighten(@color, 20%)}
}
}
}
<强> --- 强>
此外,我还会删除@green
/ 'green'
重复项,除非您确实需要其他地方的那些不同变量:例如Loop over an array of name value pairs in LESS和https://stackoverflow.com/a/25877100中的最后一个示例(正好相反的方法相同)。