Bootstrap 引导CSS变量未被替换

2wnc66cl  于 2023-05-11  发布在  Bootstrap
关注(0)|答案(4)|浏览(117)

我正在Laravel中开发一些自定义样式,并覆盖默认的引导颜色变量。
这是在我的app.scss里面

@import '~bootstrap/scss/bootstrap';
@import "node_modules/font-awesome/scss/font-awesome.scss";

$primary: #625BF6;
$danger: #ff4136;

.btn-primary {
    --bs-btn-bg: $primary;
    --bs-btn-hover-bg: #6b64f5;
    --bs-btn-active-bg: #534bf3;
}

我还对webpack.mix.js进行了修改,使用sass作为编译器

mix.js('resources/js/app.js', 'public/js')
    .sass('resources/css/app.scss', 'public/css');

但是,即使在运行npm watchnpm run dev之后,变量$primary也不会被替换。

为什么会这样?
编辑:我不认为这是关于引导或变量的顺序了。变量只是没有被替换。

7gcisfzg

7gcisfzg1#

这是最近SCSS版本中的breaking change。原因是$primary实际上是CSS变量的有效值,因此它不再被自动替换(如果这是您想要输入的)。要获得要使用的实际SCSS变量,您需要使用插值:

@import '~bootstrap/scss/bootstrap';
@import "node_modules/font-awesome/scss/font-awesome.scss";

$primary: #625BF6;
$danger: #ff4136;

.btn-primary {
    --bs-btn-bg: #{$primary};
    --bs-btn-hover-bg: #6b64f5;
    --bs-btn-active-bg: #534bf3;
}
0tdrvxhp

0tdrvxhp2#

也许这个能帮到你

npm run watch-poll

参考:https://laravel.com/docs/8.x/mix#watching-assets-for-changes

1tu0hz3e

1tu0hz3e3#

尝试定义变量,然后导入它。

// Define variables
$primary: #625BF6;
$danger: #ff4136;

// Import styles
@import '~bootstrap/scss/bootstrap';
@import "node_modules/font-awesome/scss/font-awesome.scss";

.btn-primary {
    --bs-btn-bg: $primary;
    --bs-btn-hover-bg: #6b64f5;
    --bs-btn-active-bg: #534bf3;
}

npm watchnpm run dev

z4bn682m

z4bn682m4#

sass值被替换为一个常规属性,而不是css变量

$primary:   #625BF6;
$danger:    #ff4136;

@import '~bootstrap/scss/bootstrap';

.btn-primary {
    background-color:$primary;
    --bs-btn-bg: $primary;
    --bs-btn-hover-bg: #6b64f5;
    --bs-btn-active-bg: #534bf3;
}

因此,看起来sass不支持从sass变量设置css变量。

相关问题