使用 Sass 自定义引导程序;我到底应该在我的 scss 文件中的什么地方导入 bootstrap?
customizing boostrap with Sass; where exactly should I import bootstrap in my scss file?
在尝试使用 Sass 自定义 bootstrap 时,我注意到覆盖默认 bootstrap 变量似乎以一种不连贯的方式工作,并且希望有人能解释到底发生了什么这就是导致这种行为的原因。
某些变量似乎只有在导入 bootstrap 之前声明时才会被覆盖,其他变量似乎只有在导入 bootstrap 之后定义时才会被覆盖。我将分别展示一个例子。
变量 $form-range-thumb-width 和 $form-range-thumb-height 只被我提供的值覆盖,如果 bootstrap 在用我自己的值声明变量后被导入,就像这样:
$form-range-thumb-width: 2rem;
$form-range-thumb-height: 2rem;
@import '../node_modules/bootstrap/scss/bootstrap';
如果另一方面我这样做(在覆盖两个变量之前放置导入):
@import '../node_modules/bootstrap/scss/bootstrap';
$form-range-thumb-width: 2rem;
$form-range-thumb-height: 2rem;
然后我使用的值无效,并且这两个变量在编译为常规 css.
时采用默认值(在本例中为 1rem)
在这一点上,您会假设为了覆盖一个变量,您需要在导入之前执行此操作 bootstrap 但是随后用 $font-family-base 之类的变量描述了完全相反的行为。
在这种情况下,您需要在 scss 中导入 bootstrap 后覆盖变量,否则覆盖无效。
因此,例如,这会起作用并正确覆盖字体
@import '../node_modules/bootstrap/scss/bootstrap';
$font-family-base: 'Manrope';
但这不会。
$font-family-base: 'Manrope';
@import '../node_modules/bootstrap/scss/bootstrap';
在第二种情况下,字体系列将采用其默认值。
有谁能解释是什么导致了这种行为?
文档中有解释:https://getbootstrap.com/docs/5.0/customize/sass/#importing
由于您没有引用自定义中的任何现有变量,因此您只需要在 导入 bootstrap 之前设置更改 以覆盖 !default
变量...
$form-range-thumb-width: 2rem;
$form-range-thumb-height: 2rem;
$font-family-base: 'Manrope';
@import '../node_modules/bootstrap/scss/bootstrap';
此外,我无法重现 $font-family-base
中描述的问题。它按预期工作:https://codeply.com/p/Rqx2vICKCr
在尝试使用 Sass 自定义 bootstrap 时,我注意到覆盖默认 bootstrap 变量似乎以一种不连贯的方式工作,并且希望有人能解释到底发生了什么这就是导致这种行为的原因。
某些变量似乎只有在导入 bootstrap 之前声明时才会被覆盖,其他变量似乎只有在导入 bootstrap 之后定义时才会被覆盖。我将分别展示一个例子。
变量 $form-range-thumb-width 和 $form-range-thumb-height 只被我提供的值覆盖,如果 bootstrap 在用我自己的值声明变量后被导入,就像这样:
$form-range-thumb-width: 2rem;
$form-range-thumb-height: 2rem;
@import '../node_modules/bootstrap/scss/bootstrap';
如果另一方面我这样做(在覆盖两个变量之前放置导入):
@import '../node_modules/bootstrap/scss/bootstrap';
$form-range-thumb-width: 2rem;
$form-range-thumb-height: 2rem;
然后我使用的值无效,并且这两个变量在编译为常规 css.
时采用默认值(在本例中为 1rem)在这一点上,您会假设为了覆盖一个变量,您需要在导入之前执行此操作 bootstrap 但是随后用 $font-family-base 之类的变量描述了完全相反的行为。 在这种情况下,您需要在 scss 中导入 bootstrap 后覆盖变量,否则覆盖无效。
因此,例如,这会起作用并正确覆盖字体
@import '../node_modules/bootstrap/scss/bootstrap';
$font-family-base: 'Manrope';
但这不会。
$font-family-base: 'Manrope';
@import '../node_modules/bootstrap/scss/bootstrap';
在第二种情况下,字体系列将采用其默认值。
有谁能解释是什么导致了这种行为?
文档中有解释:https://getbootstrap.com/docs/5.0/customize/sass/#importing
由于您没有引用自定义中的任何现有变量,因此您只需要在 导入 bootstrap 之前设置更改 以覆盖 !default
变量...
$form-range-thumb-width: 2rem;
$form-range-thumb-height: 2rem;
$font-family-base: 'Manrope';
@import '../node_modules/bootstrap/scss/bootstrap';
此外,我无法重现 $font-family-base
中描述的问题。它按预期工作:https://codeply.com/p/Rqx2vICKCr