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

Sass/Scss自定义运算公式输出结果不符合预期求助

问题原因

Sass 中取模运算符 % 和乘法运算符 * 属于同优先级运算符,默认按照从左到右的顺序执行运算。你原本写的 $i%8*$i%8 实际运算逻辑为:

(($i % 8) * $i) % 8

代入 $i=91 计算就是 ((91%8)*91)%8 = (3*91)%8 = 273%8 = 1,和你得到的错误输出完全一致。

你之前修改的写法报错是因为:你将乘法运算符 * 放在了两个 #{} 插值块之外,插值块输出的是纯文本内容,Sass 不会对两个文本之间的 * 执行算术运算,同时语法不符合 Sass 插值规则,因此直接触发编译错误。

解决方法

方法1:用括号强制运算优先级

把取模运算放在括号里,让 Sass 优先执行取模,再执行乘法,所有算术运算放在同一个插值块内即可:

$calc-pos-y: calc(#{$j*20%} + #{($i % 8) * ($i % 8)}px);

方法2:提前计算取模结果(可读性更高)

提前把 $i % 8 的结果存入单独变量,再做乘法运算:

$mod-8: $i % 8;
$calc-pos-y: calc(#{$j*20%} + #{$mod-8 * $mod-8}px);

以上两种写法都可以得到预期结果:当 $i=91 时,输出为 calc(100% + 9px)。


内容的提问来源于stack exchange,提问作者Fouvet Sébastien

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 16:12:03