【问题标题】:Is it possible to dynamically import Variables.scss file in Styles.scss?是否可以在 Styles.scss 中动态导入 Variables.scss 文件?
【发布时间】:2019-10-05 19:51:03
【问题描述】:

两个不同的客户端需要自己的主题,它们各自的主题颜色保存在 Variables1.scss 和 Variables2.scss 文件中。启动时,应用程序进行 http 调用并提取公司名称等信息。现在,根据公司名称,我想决定是导入 Variables1.scss 还是 Variables2.scss。

这似乎有点棘手,因为首先要编译 SCSS 以生成 CSS。并且只有在该应用程序启动并从数据库中提取公司信息之后。

通过导入各自的Variables.scss文件为每个客户构建应用程序可能是一个简单的解决方案,但如果公司数量增加,这种方式将不可行。

我浏览了很多与我的相关的帖子,但他们要么提出了一个导致大量代码重复的解决方案,要么导致我在整个应用程序中更改类的名称。

非常感谢专家的建议。

【问题讨论】:

  • @RandyCasburn 这个解决方案总是要求我浏览一个设置主题的特定页面。如果我们总是可以在启动时加载特定组件,那么这种方法会很有帮助。
  • 应用程序或根组件总是在每个 Angular 应用程序中加载,并且每个 Angular 应用程序都有一个 index.(html) 页面被加载。
  • @RandyCasburn 感谢您的回复,它在某种程度上有效。这种方法的唯一问题是我们无法使用这些变量更新全局 styles.scss 文件,我们必须为每个单独的子组件编写 css 类,即使是常见的 css 类也是如此。使用 ::ng-deep 可能会解决问题,但它似乎已被弃用。

标签: javascript css angular typescript sass


【解决方案1】:

我认为这里最好的方法是使用CSS Variables

对于variables1.scssvariables2.scss,您知道它们的结构以及它们包含哪些属性,基于此您可以使用CSS Variables 创建相同的属性,然后将其映射到您的应用程序到一个公共变量:

例如

  $background-default: var(--background-default)

当您发出Http 请求时,会根据响应动态加载变量。

【讨论】:

  • 如何动态加载变量?能详细解释一下吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-30
  • 2017-07-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-07
  • 2018-12-11
  • 1970-01-01
相关资源
最近更新 更多