Angular 2+ CSS 带有渲染器的自定义属性(变量)
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 渲染器将覆盖样式 属性 而不是附加到样式 属性.
渲染器可以用来实现这个功能吗?如果没有,是否有在 Angular 中使用 CSS 自定义属性的首选方法?谢谢!
尝试使用setStyle
方法
renderer.setStyle(document.documentElement, `--${cssVariableName}`, `${value}`);
你可以使用的是[ngStyle]。您不需要使用渲染器。
在您的控制器中,您可以拥有一个具有您要应用的 css 属性的对象。
像这样。
props = {'color': 'red', 'font-size': '18px'};
然后在您的 html 中,您可以在 ngStyle 中使用它来将这些属性应用于元素。
<div [ngStyle]="props">Great example</div>
希望对您有所帮助。
尝试使用 Renderer2
对象 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);
我正在尝试将 Vanilla JavaScript 代码转换为 Angular 2+。
在Javascript中,我有这样的说法:
document.documentElement.style.setProperty(`--${cssVariableName}`, value);
在 Angular 中,我发现复制上述语句的唯一方法是这样的:
renderer.setProperty(document.documentElement, 'style', `--${cssVariableName}: ${value}`);
问题:如果我有多个在不同时间动态设置的自定义属性(--cssVariable1、--cssVariable2...)。 Angular 渲染器将覆盖样式 属性 而不是附加到样式 属性.
渲染器可以用来实现这个功能吗?如果没有,是否有在 Angular 中使用 CSS 自定义属性的首选方法?谢谢!
尝试使用setStyle
方法
renderer.setStyle(document.documentElement, `--${cssVariableName}`, `${value}`);
你可以使用的是[ngStyle]。您不需要使用渲染器。
在您的控制器中,您可以拥有一个具有您要应用的 css 属性的对象。
像这样。
props = {'color': 'red', 'font-size': '18px'};
然后在您的 html 中,您可以在 ngStyle 中使用它来将这些属性应用于元素。
<div [ngStyle]="props">Great example</div>
希望对您有所帮助。
尝试使用 Renderer2
对象 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);