在Typescript中更改运行时CSS变量的值

时间:2018-04-29 18:43:12

标签: css angular typescript

我有一个角度4的网页应用,需要根据从后端获取的颜色和图像网址的值来设置样式。我已成功配置Web应用程序以使用从服务器发送的图像URL来加载所需的图像,但颜色值的问题更具挑战性。应用程序中很多地方使用的主要颜色都在styles.css文件中作为css变量。

:root {
--grape: #4b286d;
--purple: #651f97;
--purp-button-on-hover: #6d4299;
--accessibility-green: #248700;
--green-button-on-hover: #36ad0a;
--telus-grey: #595859;
--text-grey: #54595f;
--bg-grey: #e2e2e2;
--secondary-bg: #f5f5f5;
--white: #fff;
--almost-white: #f3f3f3;
--footer-bg: #333333;
--footer-copyright: #595853;
--select-title: #4a4a4a;
--pale-grey: #f5f6f7;
--select-gradient: linear-gradient(to bottom, #f2f2f2, #d4d4d4);
--select-border: #979797;
--font-type: "Helvetica Neue", helvetica, arial, sans-serif;
--font-light: 300;
}

我希望能够在打字稿中将这些值更改为首次加载应用时从服务器获取的值。我发现的方法似乎涉及获取HTMLElement并将其样式颜色更改为我想要的颜色,这意味着我必须逐个浏览整个应用程序更改每个元素的颜色。有没有更好的方法来实现这一目标?谢谢。

1 个答案:

答案 0 :(得分:1)

由于这些值是在根级别定义的,因此您只需使用document更新它们。我不确定如何以角度访问文档,但是一旦有了文档,就可以这样做:

document.documentElement.style.setProperty(`--${your-variable}`, value + suffix); //suffix may be px or ''

这样,您将直接设置css变量,该变量将在所有位置生效,您不必定位单个元素。