SCSS要先对准具体问题,重点落在SCSS里直接写calc(100% - $gap)会报错或失效、calc()在 SCSS 中的空格和单位必须手动保全、父容器高度缺失会让calc(100% - X)彻底白写,不能只用一个大类词概括。
SCSS中calc()需用插值语法#{$var}避免Sass提前运算,变量必须带单位,加减号前后须空格,父容器需有高度基准,否则calc静默失效;SCSS里直接写calc(100% - $gap)会报错或失效这不是浏览器的问题,是 Sass 编译器把$gap当成了自己的变量参与了运算——比如$gap: 20px,它可能真去算100% -;更糟的是,某些版本会因类型不匹配直接跳过整条声明,连 warning 都没有。你写了calc(100% - #{$gap}),但万一$gap是20(无单位),编译出来就是calc(100% - 20),浏览器直接丢弃整条规则;大概率不是calc写错了,而是100%根本没基准;父元素height: auto或压根没设高度时,100%解析为0,结果是-60px,浏览器直接忽略该声明。常见于 Vue/React 组件嵌套:.layout没设height: 100%,子组件.content的calc(100% - 60px)就无效验证方式:DevToo;低版本 Less 甚至会把calc(100% - 50px)编译成calc(50%);安全写法只有两种:width: calc(~"100% - @{gap}")。