我刚刚开始一个新的项目使用Bootstrap 5,我试图设置一些自定义值的主题颜色。然而,按照我一直以来的方式去做,却给了我一些问题。
我创造了三种颜色:$primary,$secondary,$tertiary.但是,如果我添加任何类,如bg-tertiary,那么没有任何变化,就好像它不存在一样。bg-primary只是使用Bootstrap定义的默认颜色。
我的代码如下:
@import "bootstrap/_functions";
@import "bootstrap/_variables";
$primary: #ec008c;
$secondary: #1ab7ea;
$tertiary: #3fb247;
$theme-colors: (
"primary": $primary,
"secondary": $secondary,
"tertiary": $tertiary,
"light": $light,
"dark": $dark,
);
@import "bootstrap/bootstrap";
如果我将一个默认值(如“dark”)更改为使用$tertiary,那么scss文件中使用$dark的任何代码都将更改为使用$tertiary中的值。如下所示:
$theme-colors(
"dark": $tertiary
);
#pageFooter {
background: $dark; //This becomes #3fb247 the value from $tertiary
}
我做错了什么?我不明白为什么scss文件中的变量会受到$theme-colors的影响,而类却不会。
编辑:
使用chrome inspector我可以看到.bg-primary使用了一个css变量--bs-primary-rgb。查看可用的变量--bs-primary已更改为我设置的颜色,但没有--bs-primary-rgb。
我怎样才能改变这个变量。应该自动完成吗?
随着进一步的研究,这些rgb变量似乎已经在Bootstrap 5.1中引入。我找不到太多关于如何让变量更新到我设置的值的信息,可能是因为它太新了。所以我选择回到5.0.2,现在一切都像我期望的那样工作。
3条答案
按热度按时间2jcobegt1#
Bootstrap 5.1.0
最近对text和bg类创建方式的更改要求在5.1.0中进行额外的SASSMap合并
Bootstrap 5.0.2
如果你想让它生成像
bg-tertiary
、btn-tertiary
等类,你需要使用map-merge
向theme-colorsMap添加一个“第三”变量。Demo
nvbavucw2#
自Bootstrap 5.1.3起,背景颜色组件不会自动生成
手册上写着,
不幸的是,目前并不是每个组件都使用这个SassMap。未来的更新将努力改善这一点。在此之前,请计划使用${color}变量和此SassMap。
下面是在Bootstrap 5.1.3中 * 手动 * 添加
.bg-*
类的一种方法。使用Parcel V 2.3.2编译示例html
页面呈现如下所示
bpsygsoo3#
我能够通过下面的代码在Bootsrap 5.1.x上实现这一点
这样你就可以使用自定义的背景类:
.bg-custom-red
.bg-custom-green
.bg-custom-blue
参考文献: