在 Angular 中动态更改字体、背景颜色
Dynamically change font, background colors in Angular
我们有一个使用 Angular 9 构建的 Web 应用程序。headers 的颜色、边框和一些菜单背景存储在 css 文件的多个位置。
要求根据客户品牌更改这些内容。因此,如果 ClientA 登录,他们应该开始看到这些颜色为 #FF0000,如果 ClientB 登录,他们需要看到这些颜色为 #00FF00。
除了每隔 html 使用 style="color:{{clientColor}} 进行内联样式设置之外,您能帮忙推荐最好的方法吗?
谢谢!
你可以使用这个:
[style.color]="clientColor"
您可以尝试使用 :root
选择器和其中的变量,对于 body
标记,只需覆盖这些根变量,工作示例在这里:stackblitz
styles.scss:
:root {
--fontColor: #000;
}
.theme-dark {
--fontColor: red;
}
app.component.ts
export class AppComponent {
theme = 'theme-dark';
toggle(): void {
const body = document.body;
if (body.classList.contains(this.theme)) {
body.classList.remove(this.theme);
} else {
body.classList.add(this.theme);
}
}
}
app.component.html
<p>
Start editing to see some magic happen :)
</p>
<button (click)="toggle()">Toggle color font</button>
app.component.scss
p {
font-family: Lato;
color: var(--fontColor);
}
我们有一个使用 Angular 9 构建的 Web 应用程序。headers 的颜色、边框和一些菜单背景存储在 css 文件的多个位置。
要求根据客户品牌更改这些内容。因此,如果 ClientA 登录,他们应该开始看到这些颜色为 #FF0000,如果 ClientB 登录,他们需要看到这些颜色为 #00FF00。
除了每隔 html 使用 style="color:{{clientColor}} 进行内联样式设置之外,您能帮忙推荐最好的方法吗?
谢谢!
你可以使用这个:
[style.color]="clientColor"
您可以尝试使用 :root
选择器和其中的变量,对于 body
标记,只需覆盖这些根变量,工作示例在这里:stackblitz
styles.scss:
:root {
--fontColor: #000;
}
.theme-dark {
--fontColor: red;
}
app.component.ts
export class AppComponent {
theme = 'theme-dark';
toggle(): void {
const body = document.body;
if (body.classList.contains(this.theme)) {
body.classList.remove(this.theme);
} else {
body.classList.add(this.theme);
}
}
}
app.component.html
<p>
Start editing to see some magic happen :)
</p>
<button (click)="toggle()">Toggle color font</button>
app.component.scss
p {
font-family: Lato;
color: var(--fontColor);
}