【问题标题】:Change the values of CSS variables at runtime in Typescript在 Typescript 运行时更改 CSS 变量的值
【发布时间】:2018-04-30 03:01:16
【问题描述】:

我有一个 Angular 4 Web 应用程序,它需要根据从后端获取的颜色值和图像 url 设置样式。我已成功配置 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;
}

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

【问题讨论】:

    标签: css angular typescript


    【解决方案1】:

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

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

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

    【讨论】:

    • 为我工作,太棒了!
    猜你喜欢
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多