Sass 难以创建 Bootstrap 4 的自定义版本

Sass difficulty creating custom build of Bootstrap 4

我正在尝试创建 Bootstrap 4 的自定义版本。除其他外,我想将默认颜色(“主要”)从 Bootstrap 蓝色更改为其他颜色。

如果我直接编辑 Bootstrap 源文件,并将我的新颜色添加到标准颜色列表中,并将“主要”设置为我的新颜色,然后重新构建,一切都像我一样工作会期望,并且所有组件都选择我的新颜色作为它们的默认颜色,并且它正确地计算更亮和更暗的变体。

但我知道这并不是真正正确的方法。所以我尝试使用未触及的 Bootstrap 源文件,并创建了一个像这样的 custom.scss 文件

@import "functions"; 
@import "variables";
@import "mixins";

$newcolor: #00a89c;

$colors: (
    "newcolor": $newcolor
);

$primary: $newcolor;

$theme-colors: (
    "primary": $primary
);

@import "bootstrap";

当我重建时,结果不同。已编译的 CSS 包含新颜色,并且一些组件(例如 btn-primary、badge-primary、bg-primary)已将其拾取,但其他元素(例如 btn-link)已还原到 Bootstrap 蓝色。我查看了Bootstrap来源,btn-link设置为$link-color,而$link-color来自theme-color("primary"),所以我想我一定是按错误的顺序做某事,或者误解了优先顺序。

谁能指出我哪里出错了,并告诉我如何让我的新颜色在所有引用“主要”的地方使用?

你在最后使用 @import "bootstrap" 部分正确。

@import bootstrap.scss 已经包含它们的 @imports 时,@importing 函数、变量和 mixins 是不正确的。

这里发生的本质是,文件顶部的 @import "mixins" 只能看到它之前的内容(默认函数和变量文件),那是在您进一步提供自己的值之前。

custom.scss

$newcolor: #00a89c;

$colors: (
    "newcolor": $newcolor
);

$primary: $newcolor;

$theme-colors: (
    "primary": $primary
);

@import "bootstrap";