You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现CSS变量与SCSS变量的加法运算

解答

原写法是否可行

不可行。

原因很简单:SCSS变量是编译时变量,只在SCSS转CSS的预编译环节生效,编译完就会被替换成具体的固定值;而CSS原生变量是运行时变量,是浏览器渲染页面的时候才会读取的,预编译阶段SCSS根本拿不到--header-size的实际值,直接相加的写法既通不过编译,也拿不到预期结果。

解决方案

用CSS自带的calc()函数,配合SCSS的变量插值语法就可以实现,代码如下:

.gap {
  top: calc(var(--header-size) + #{$bar-size});
}

实现逻辑

  1. 预编译阶段,SCSS会把#{$bar-size}替换成它对应的值20rem,编译完成后得到的原生CSS是:
.gap {
  top: calc(var(--header-size) + 20rem);
}
  1. 浏览器渲染时,会自动获取当前--header-size的实际值(哪怕你在媒体查询断点里动态修改了这个值也能正常识别),通过calc()实时计算出最终的top值,完全符合你的需求。

注意点

  • calc()里的加减运算符前后必须加空格,不然会被浏览器判定为无效语法
  • 如果你的SCSS变量没有带单位,插值的时候需要自行补全,比如#{$bar-size}rem

内容的提问来源于stack exchange,提问作者KShewengger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:57:02