由于我正处于开发应用程序的预生产周期中,因此我经常更改视觉效果,以便汇聚到客户将要验证的内容。
同一页面的一些视觉效果(称之为主题)会很有意思,以便我可以快速地将它们呈现给客户。
我发现的方法是创建一个我放在身上的外观类,通过更改它我可以相应地更改页面本身。
这就是说,我对全局变量较小的变量感兴趣如下:
// default appearance
@navBarHeight: 50px;
.appearanceWhite {
@navBarHeight: 130px;
}
.appearanceBlack {
@navBarHeight: 70px;
}
这样,后来在.less中,我提出如下课程:
#navBar {
height: @navBarHeight;
// appearance handling
.appearanceBlack & {
background-color: black;
}
.appearanceWhite & {
background-color: white;
}
}
当然,实际情况如果更复杂。
是否可以根据外观CSS类定义(或重新定义)较少的变量?
答案 0 :(得分:2)
这完全取决于主题之间有多少样式和变量不同,例如(非常)基本的凝视点可能是这样的:
@themes: blue rgb( 41, 128, 185), marine rgb( 22, 160, 133), green rgb( 39, 174, 96), orange rgb(211, 84, 0), red rgb(192, 57, 43), purple rgb(142, 68, 173); // usage: #navBar { .themed(background-color); } // implementation: @import "for"; .themed(@property) { .for(@themes); .-each(@theme) { @name: extract(@theme, 1); @color: extract(@theme, 2); .theme-@{name} & { @{property}: @color; } } }
然后使用Pattern Matching,Ruleset Arguments等等,你可以自动生成任何复杂的外观/主题层次......
例如几乎相同的简单示例,但具有更多可自定义的方法:
// usage:
#navBar {
.themed({
color: @fore-color;
background-color: @back-color;
});
}
// themes:
.theme(@name: green) {
@fore-color: green;
@back-color: spin(@fore-color, 180);
.apply();
}
.theme(@name: blue) {
@fore-color: blue;
@back-color: (#fff - @fore-color);
.apply();
}
.theme(@name: black-and-white) {
@fore-color: black;
@back-color: white;
.apply();
}
// etc.
// implementation:
.themed(@style) {
.theme(); .apply() {
.theme-@{name} & {
@style();
}
}
}