[英]Angular 6 set Background Color in Html to CSS Variable
我正在使用Angular 6,我有一個簡單的div
並希望從模板內部設置此div
的背景顏色。 傳遞正常顏色時效果很好。 但這不適用於CSS變量。
這個例子有效
<div [style.background]="'red'">...</div>
此示例不起作用
<div [style.background]="'var(--some-css-var)'">...</div>
你必須使用ngStyle
<some-element [ngStyle]="{'background-color': styleExp}">...</some-element>
為了將樣式屬性綁定到HTML模板中的CSS變量,必須清理CSS變量表達式var(...)
。 您可以定義自定義管道:
import { Pipe, PipeTransform } from '@angular/core';
import { DomSanitizer, SafeStyle } from '@angular/platform-browser';
@Pipe({
name: 'safeStyle'
})
export class SafeStylePipe implements PipeTransform {
constructor(private sanitizer: DomSanitizer) { }
transform(value: string): SafeStyle {
return this.sanitizer.bypassSecurityTrustStyle(value);
}
}
並在HTML模板中使用它:
<div [style.background-color]="'var(--some-css-var)' | safeStyle"></div>
<div [style.background-color]="bkColor | safeStyle"></div>
bkColor = "var(--some-css-var)";
有關演示,請參閱此stackblitz 。
你可以用兩種方式做到這一點
使用獲取字符串的管道並返回一些顏色代碼。
<div [style.background-color]="someString | colorSetter"></div>
添加到html標記的動態類例如:
<div class="my-div" [class]="someClassName"></div>
並在scss中添加選項
SCSS:
.my-div{
&.optoin1{
background-color:red;
}
&.optoin2{
background-color:black;
}
&.optoin3{
background-color:green;
}
&.optoin4{
background-color:yellow;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.