有没有办法在运行时更改Bootstrap的主题颜色?

时间:2018-05-08 16:33:42

标签: twitter-bootstrap sass bootstrap-4 asp.net-bundling

我有一个ASP.NET MVC Web应用程序,我计划使用Bootstrap(因为它是默认MVC模板的一部分)。我知道自定义引导程序看起来非常简单,以及如何在定义主题颜色的覆盖后创建我自己的导入site.scss的{​​{1}}文件来覆盖主题颜色:

bootstrap.scss

然后将其编译为$theme-colors: ( primary: #123456; // whatever colour I want here ); @import "bootstrap.scss"; 并提供给我们的客户。

但是,我们的客户需要能够定义自己的主题。因此,如果他们想要蓝色按钮,他们会得到蓝色按钮,如果他们想要红色,他们会变红。使用Bootstrap有没有任何支持的方法?

我考虑过创建一组有限的彩色主题供他们选择,并为每个主题分别设置site.css个文件,然后提供适当的.scss,但我想利用ASP.NET捆绑功能,这是在应用程序启动时完成的,所以我必须在每个主题选项中都有一个单独的包。

另外,我注意到编译.css时会得到一个css变量列表:

boostrap.scss

并简要地认为在整个应用样式时会使用这些,因此我可以从单独的样式表覆盖以设置我的自定义颜色。遗憾的是,在:root { --blue: #007bff; --indigo: #6610f2; ... --primary: #123456; } 文件的其余部分中使用十六进制代码而不是相应的css变量。为了证明这一点,我找到并替换列为css vars的所有颜色,并且我能够从后续样式表中覆盖它们,本质上在运行时提供主题。但这不是一个很好的解决方案,因为它需要编辑已编译的css文件(在开发过程中会频繁覆盖)。

有没有人有更好的想法?

1 个答案:

答案 0 :(得分:0)

我认为您需要使用JavaScript或jQuery。当客户端更改颜色时,使用JavaScript或jQuery将颜色分配给变量并在CSS中进行更改。