【发布时间】:2018-07-30 01:20:43
【问题描述】:
我正在为此苦苦挣扎,但找不到任何答案,尽管这似乎是一种常见的情况。
我正在用 angular5 构建一个 web 应用程序,所有样式都使用 @component styleUrls 在 less 中。
我用less,所有颜色都定义在一个global-vars.less文件中,导入到所有封装的组件中。
global-vars.less:
@color_0: #283238;
some-component.less:
@import '../../global-vars';
.my-div {
background-color: @color_0;
}
我想在 global-vars.less 中添加一个层来通过父类切换颜色:
global-vars.less:
@color_0: #283238;
@color_1: #EEFFEE;
.dark-theme {
@background-app-color: @color_0;
}
.light-theme {
@background-app-color: @color_1;
}
some-component.less:
@import '../../global-vars';
.my-div {
background-color: @background-app-color;
}
当然,它不能工作,因为 LESS 会预编译所有内容。但我找不到可行的技术。 我尝试从标题中更改 CSS 文件,但是因为 Angular 使用封装的样式表作为标签插入,这对我没有帮助。 我尝试使用 mixin,但我无法根据父类创建 mixin,所以那里没有运气。
我唯一的选择是复制所有模块的所有 CSS 层次结构
.parent {
.child {
background: @light-color;
}
}
.dark theme .parent {
.child {
background: @dark-color;
}
}
但这将是一场噩梦,因为项目规模庞大
任何帮助将不胜感激。 谢谢。
【问题讨论】:
-
我不知道这是否对您的特定 Angular 项目有帮助,但 here's 典型的预定义主题生成方法,最少划船。