【发布时间】:2015-08-19 19:16:00
【问题描述】:
我想知道我是否可以改进我的 LESS-Snippet。我有很多带有颜色名称/我自己的颜色标题和相关颜色的变量,用于前景色和背景色。我根据我的颜色定义类 namend。
@logocolorgreen: #40FF01; @logocolorgreenname: green; @logocolorgreenitem: #404040;
@logocolormidblue: #01C0FF; @logocolormidbluename: midblue; @logocolormidblueitem: #404040;
@logocolorpurple: #C00031; @logocolorpurplename: purple; @logocolorpurpleitem: white;
@logocoloryellow: #FFC000; @logocoloryellowname: yellow; @logocoloryellowitem: #404040;
// ... more Colors
div {
.mixedin(@colorname) {
@bgvarname: "logocolor@{colorname}";
background-color: @@bgvarname;
@fgvarname: "logocolor@{colorname}item";
color: @@fgvarname;
}
&.@{logocolorgreenname} {
.mixedin(@logocolorgreenname);
}
&.@{logocolormidbluename} {
.mixedin(@logocolormidbluename);
}
&.@{logocolorpurplename} {
.mixedin(@logocolorpurplename);
}
&.@{logocoloryellowname} {
.mixedin(@logocoloryellowname);
}
// ... more Colors
}
编译成
div.green {
background-color: #40ff01;
color: #404040;
}
div.midblue {
background-color: #01c0ff;
color: #404040;
}
div.purple {
background-color: #c00031;
color: white;
}
div.yellow {
background-color: #ffc000;
color: #404040;
}
我想知道,如果可以的话
- 避免 Mixedin 的过度重复?
- 避免在每个混合使用中为类名和混合参数使用双 c&p?
谢谢!
【问题讨论】:
-
更适合代码审查?
-
@vidstige 也许吧,但它可能是一个语言知识问题并被抛回这里。
-
那么当您将
#40FF01更改为#ff0000但名称仍为logocolorgreen时会发生什么?我认为避免名称中的颜色是明智的,除非您 100% 确定颜色不会改变(永远)。 -
@DarkFalcon 你是对的!你有更好的主意吗?我相对确定,因为这些类似于“公司颜色”,并且此代码用于 wordpress 主题。如果重要的事情发生了变化,就会有一个更新的主题。
-
我建议你的类以页面元素命名(例如
header、footer、menu)。很难说你是否可以用颜色变量来做到这一点。如果没有,他们会很好。然后,您只需在每个需要它的规则中手动使用 mixin。
标签: css less lines-of-code