不兼容的单位:'rem' 和 'px' - Bootstrap 4.3.1

Jan*_*ndu 6 compiler-errors sass bootstrap-4

在自定义覆盖 sass 文件中覆盖 Bootstrap 4.3.1 变量时,我收到“不兼容的单位:‘rem’和‘px’”。

我尝试按照 Bootstrap 4 文档中的说明将自定义 sass 文件上的以下路径放置在文件顶部和文件最后一行。

@import "node_modules/bootstrap/scss/functions"; 
@import "node_modules/bootstrap/scss/variables";
@import "node_modules/bootstrap/scss/mixins";
Run Code Online (Sandbox Code Playgroud)

终端错误

ERROR in ./src/scss/main.scss (./node_modules/raw-loader!./node_modules/postcss-loader/lib??embedded!./node_modules/sass-loader/lib/loader.js??ref--14-3!./src/scss/main.scss)

Module build failed: 
$custom-select-feedback-icon-padding-right: calc((1em + #{2 * $custom-select-padding-y}) * 3 / 4 + #{$custom-select-padding-x + $custom-select-indicator-padding}) !default;
                                                                                                                                                                 ^
      Incompatible units: 'rem' and 'px'.
Run Code Online (Sandbox Code Playgroud)

Nis*_*hah 5

<br>首先从 SCSS 文件中删除,这是calc()功能问题而不是px or rem.

笔记

calc()function是CSS内置的函数,所以每次calc()在SCSS中调用时,都需要使用#{}技巧来使用变量

height: calc(100% - #{$body_padding})
Run Code Online (Sandbox Code Playgroud)

现在我给你举一个例子

$custom-select-padding-y = 50px;
    
$custom-select-feedback-icon-padding-right: calc((1em +  #{2 * 50px}) * 3 / 4 + #{$custom-select-padding-x + $custom-select-indicator-padding}) !default;
Run Code Online (Sandbox Code Playgroud)

2 * 50px = 100px依此类推,它无法计算1em + {random px}所以,它的返回未定义并且编译器给出错误。

calc()计算 2 * 5px = 10px or 2 * 1rem = 32px.

calc()无法计算2rem + 1em1rem + 1px