Angular material Sass 通过全局 scss 文件上的 map-get 和深色主题动态获取样式
Angular material Sass get styles dynamically via map-get and dark theme on global scss files
我在 Angular 应用程序中实现了深色主题。
它通过服务完成,并在文档正文中添加或删除 class。
this.renderer.addClass(document.body, 'color-scheme-dark');
Styles.scss 根据 class:
包含 material 主题
@include angular-material-theme($app-theme);
.color-scheme-dark {
@include angular-material-theme($dark-theme);
}
一切正常,angular 仅当我通过深色方案 class 时才设置深色主题。
但是,问题是我有全局样式 scss 文件夹,它根据浅色主题应用样式:
.app-hr {
color: map-get($app-foreground, border);
}
但如果 class 是暗的,则正确的结果是取 (app-dark-doreground,border)。
我试图做类似下面的代码,但失败了:
.app-hr {
color: map-get($app-foreground, border);
}
.color-scheme-dark {
color: map-get($app-dark-foreground, border);
}
所以我有几个 Scss 文件可以从调色板获取颜色,但我无法通过我添加的 class 动态更改它们。
接下来我该怎么做才能改变它们?
谢谢。
这就是我解决这个问题的方法。
在 global-styles.scss 中,我用变量 $theme:
做了一个 mixin
@mixin toolbar-style($theme) {
mat-toolbar {
background-color: map-get($theme, toolbar-background)
}
}
并且在 styles.scss 中,我根据 class.
添加了具有正确主题的相关 mixin
@include toolbar-style($app-foreground);
.color-scheme-dark {
@include toolbar-style($mat-dark-theme-foreground);
}
我在 Angular 应用程序中实现了深色主题。 它通过服务完成,并在文档正文中添加或删除 class。
this.renderer.addClass(document.body, 'color-scheme-dark');
Styles.scss 根据 class:
包含 material 主题@include angular-material-theme($app-theme);
.color-scheme-dark {
@include angular-material-theme($dark-theme);
}
一切正常,angular 仅当我通过深色方案 class 时才设置深色主题。 但是,问题是我有全局样式 scss 文件夹,它根据浅色主题应用样式:
.app-hr {
color: map-get($app-foreground, border);
}
但如果 class 是暗的,则正确的结果是取 (app-dark-doreground,border)。 我试图做类似下面的代码,但失败了:
.app-hr {
color: map-get($app-foreground, border);
}
.color-scheme-dark {
color: map-get($app-dark-foreground, border);
}
所以我有几个 Scss 文件可以从调色板获取颜色,但我无法通过我添加的 class 动态更改它们。 接下来我该怎么做才能改变它们? 谢谢。
这就是我解决这个问题的方法。 在 global-styles.scss 中,我用变量 $theme:
做了一个 mixin@mixin toolbar-style($theme) {
mat-toolbar {
background-color: map-get($theme, toolbar-background)
}
}
并且在 styles.scss 中,我根据 class.
添加了具有正确主题的相关 mixin@include toolbar-style($app-foreground);
.color-scheme-dark {
@include toolbar-style($mat-dark-theme-foreground);
}