我正在开发一个包含多个部分的项目。根据部分,该部分中的元素具有不同的颜色。通过我的LESS文件,我正在定义所有这些可能性:
a{
.section_what &{
color: darken(@what,10%);
}
.section_where &{
color: darken(@where,10%);
}
.section_who &{
color: darken(@who,10%);
}
.section_post &{
color: darken(@post,10%);
}
.section_events &{
color: darken(@events,10%);
}
.section_deals &{
color: darken(@deals,10%);
}
}
这似乎不是最精简的做事方式。使用这种方法我必须重复这个部分列表。因此,由其部分更改的每个元素都需要定义此部分列表。有时它的颜色,背景颜色,边框颜色等......
有更好的方法吗?
答案 0 :(得分:1)
在LESS中你可以使用更通用的代码来获取它:
@what: #111;
@where: #222;
@who: #333;
@post: #444;
@events: #555;
@deals: #666;
@items: what,
where,
who,
post,
events,
deals;
@items-count: 6;
.sections() {
.-(@items-count);
.-(@i) when (@i > 0) {
.-((@i - 1));
@name: extract(@items, @i);
.section_@{name} & {
color: darken(@@name, 10%);
}
}
}
a {
.sections();
}
b {
.sections();
}
或,如果您不需要其他任何变量,那就更好了:
@items: what #111,
where #222,
who #333,
post #444,
events #555,
deals #666;
.sections() {
.-(length(@items));
.-(@i) when (@i > 0) {
.-((@i - 1));
@item: extract(@items, @i);
@name: extract(@item, 1);
.section_@{name} & {
color: darken(extract(@item, 2), 10%);
}
}
}
a {
.sections();
}
b {
.sections();
}
它看起来相当冗长,但我认为一定程度的定制值得这样做。
请注意,length
函数仅在LESS 1.5.x中可用,对于早期版本,您可以使用预定义的计数变量,如第一个示例所示。
另一种方法(如果你更喜欢“复制 - 粘贴”式):
@what: #111;
@where: #222;
@who: #333;
@post: #444;
@events: #555;
@deals: #666;
.item(@name) {
.section_@{name} & {
color: darken(@@name, 10%);
}
}
a {
.item(what);
.item(where);
.item(who);
.item(post);
.item(events);
.item(deals);
}
P.S。
因此,由其部分更改的每个元素都需要定义此部分列表。有时它的颜色,背景颜色,边框颜色等......
也可以为属性添加更多“自定义点” - 但这取决于这些部分和CSS属性之间的确切关系......(所以我没有把它放到上面的例子中,不做事情要理解得更复杂)。 基本上关键是“list / loops”,“mixins / abstraction”等。