假设您仍希望在一个样式表中对其进行主题化(而不是在评论中注明cimmanon的多个表格),并假设您使用的是LESS 1.3.2,则以下代码通过设置a来减少重复量循环遍历需要更改主题的类.
请注意,这不适用于Codepen(它会抛出一个错误未被捕获的#,可能是因为它们运行的是LESS的早期版本),但您可以通过将代码放入LESS’s compiler来正确编译它.
LESS(基于您的Codepen代码,添加了演示主题)
//
// CONSTANTS
@lightColour: #fff;
@darkColour: #000;
@lightBg: #fff;
@darkBg: #000;
@numberOfThemes: 3; //controls theme loop
//
// MIXINS
//Theme Definitions by parametric mixin numbers (1),(2),etc.
.themeDefs(1) {
@lightColour: #f00;
@darkColour: #fff;
@lightBg: #f00;
@darkBg: #fff;
}
.themeDefs(2) {
//inverse of 1
@lightColour: #fff;
@darkColour: #f00;
@lightBg: #fff;
@darkBg: #f00;
}
.themeDefs(3) {
@lightColour: #cfc;
@darkColour: #363;
@lightBg: #cfc;
@darkBg: #363;
}
.curvy {
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
}
//
// GENERAL STYLING
* {padding: 0;margin: 0;}
html {text-align: center;}
h2 {padding: 20px 0;}
.Box {
.curvy;
color: @lightColour;
background: @darkBg;
display:inline-block; width:10%; padding:20px 5%; margin:0 1% 20px 1%;
}
//
// THEME BUILDING
.buildThemes(@index) when (@index < @numberOfThemes + 1) {
.theme-@{index} {
.themeDefs(@index);
color: @lightColour;
background: @darkBg;
.Box {
color: @darkColour;
background: @lightBg;
}
}
.buildThemes(@index + 1);
}
//stop loop
.buildThemes(@index) {}
//start theme building loop
.buildThemes(1);
CSS输出(仅显示循环主题css以简洁起见)
.theme-1 {
color: #ff0000;
background: #ffffff;
}
.theme-1 .Box {
color: #ffffff;
background: #ff0000;
}
.theme-2 {
color: #ffffff;
background: #ff0000;
}
.theme-2 .Box {
color: #ff0000;
background: #ffffff;
}
.theme-3 {
color: #ccffcc;
background: #336633;
}
.theme-3 .Box {
color: #336633;
background: #ccffcc;
}