[英]Angular 2+ CSS Custom Properties (variables) with Renderer
我正在嘗試將 Vanilla JavaScript 代碼轉換為 Angular 2+。
在 Javascript 中,我有這樣的聲明:
document.documentElement.style.setProperty(`--${cssVariableName}`, value);
在 Angular 中,我發現復制上述語句的唯一方法是這樣的:
renderer.setProperty(document.documentElement, 'style', `--${cssVariableName}: ${value}`);
問題:如果我在不同時間動態設置多個自定義屬性(--cssVariable1、--cssVariable2...)。 Angular Renderer 將覆蓋 style 屬性而不是附加到 style 屬性。
渲染器可以用來實現這個功能嗎? 如果沒有,是否有在 Angular 中使用 CSS 自定義屬性的首選方法? 謝謝!
嘗試使用Renderer2
Object setStyle
方法
/**
* Implement this callback to set a CSS style for an element in the DOM.
* @param el The element.
* @param style The name of the style.
* @param value The new value.
* @param flags Flags for style variations. No flags are set by default. enum: 1 or 2, 1: Marks a style as important. 2: Marks a style as using dash case naming (this-is-dash-case).
*/
abstract setStyle(el: any, style: string, value: any, flags?: RendererStyleFlags2): void;
你需要這個
renderer.setStyle(document.documentElement, `--${cssVariableName}`, `${value}`, 2);
您可以使用的是 [ngStyle]。 您不需要使用渲染器。
在您的控制器中,您可以擁有一個具有您想要應用的 css 屬性的對象。
像這樣。
props = {'color': 'red', 'font-size': '18px'};
然后在您的 html 中,您可以在 ngStyle 中使用它來將這些屬性應用於元素。
<div [ngStyle]="props">Great example</div>
希望能幫助到你。
嘗試使用setStyle
方法
renderer.setStyle(document.documentElement, `--${cssVariableName}`, `${value}`);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.