【发布时间】:2019-07-05 02:05:15
【问题描述】:
在 bootstrap 4 中,您可以使用以下数组定义和/或覆盖默认颜色:(as documented here)
$theme-colors: (
"primary": #001122, /*override*/
"color-1": red, /*new color*/
"color-2": black, /*new color*/
"color-3": white /*new color*/
);
我想为不同的用户制作自定义主题颜色。用户可以根据身体的类别选择我定义的不同调色板。
我创建了一个新文件来制作我自己的样式,在 body 标签的 CSS 变量中定义我的主题颜色:
body {
&.color-pallette-red {
--theme-color-1: red;
--theme-color-2: black;
--theme-color-3: white;
color: var(--theme-color-1); /*red*/
}
&.color-pallette-yellow {
--theme-color-1: yellow;
--theme-color-2: black;
--theme-color-3: white;
color: var(--theme-color-1); /*yellow*/
}
}
但是这样一来,引导颜色当然不会被覆盖……
我尝试将我的 CSS 变量粘贴到前面提到的引导程序数组中,以确保引导程序使用我的颜色:
$theme-colors: (
"color-1": var(--theme-color-1),
"color-2": var(--theme-color-2),
"color-3": var(--theme-color-3)
);
但这会在运行编译脚本后返回Error: $color2: var(--theme-color-1) is not a color. @return mix($color-base, $color, $level * $theme-color-interval);。所以引导程序/编译器没有将我的 CSS 变量识别为颜色...
总结我想要的是:根据身体类别更改引导颜色。有谁知道实现这一目标的方法吗?
【问题讨论】:
-
提供minimal reproducible example,以便我们了解它是如何工作的。
-
你试过
"color-1":#{var(--theme-color-1)} -
引导变量是基于 sass 的,这意味着它们将在构建时生成。因此,您不能将 css 变量注入其中。您所能做的就是在根类中使用不同的变量多次包含整个引导程序。
-
@TemaniAfif 我试过了,但这给出了同样的错误。
-
@Sasan Farrokh 我考虑过这个解决方案,但它的可维护性要差得多......
标签: css twitter-bootstrap variables sass