动态设置 scss 变量 angular ionic

Posted

技术标签:

【中文标题】动态设置 scss 变量 angular ionic【英文标题】:Dynamically set scss variables angular ionic 【发布时间】:2020-06-22 01:11:30 【问题描述】:

我有一个 API 调用会得到一个带有我的 scss 颜色的 json,例如

dynamic-colour: #5260ff

但是直到 ionic 应用程序运行时才会调用此变量。甚至可以在编译前动态设置 scss 变量吗?

从我看到的大多数角度示例中,它们已经有预设的颜色集,我没有看到任何我想要实现的示例。是否可以预设一个变量,但在运行应用程序时覆盖它?

任何人都知道如何从 API 调用中动态获取 scss 变量并设置全局变量值?我相信可以运行一个打字稿函数来用我想要的覆盖每个页面的 scss。

【问题讨论】:

【参考方案1】:

SCSS在编译时被编译为CSS,而SCSS变量在编译时被resolved值替换,也就是说在运行时无法改变变量。然而 css 变量就在那里,你可以很容易地改变它们,

例如:

:root
   --dynamic-colour: #5260ff

现在您可以从您的组件中更改其值,例如:

changeColor(color:string)
   document.documentElement.style.setProperty('--dynamic-colour', color);

您也可以将 --dynamic-colour 分配给您的 scss 变量,这样您就不必在多个地方进行更改:

$dynamic-colour: var(--dynamic-colour);

STACKBLITZ WORKING DEMO

【讨论】:

以上是关于动态设置 scss 变量 angular ionic的主要内容,如果未能解决你的问题,请参考以下文章

Angular SCSS 全局变量导入

如何在 Angular 组件中访问 SCSS/SASS 变量

Angular 组件的全局 scss 变量,无需每次都导入它们

将 .ts 中的变量导入 .scss angular

如何将scss变量设置为css变量使用javascript

如何使用 angular-cli 和 ng-bootstrap 自定义 Bootstrap 4 SCSS 变量?