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

SCSS中acos函数有何变更?本地引入动画代码报SassError如何解决?

问题原因

新版Dart Sass(v1.33+)对数值单位的运算规则做了严格限制:

  • 数学函数(如acos、sin、cos等)返回的是无单位的弧度数值,不再允许直接与带角度单位(如deg)的数值进行乘法运算,否则会抛出「Undefined operation」错误。
  • 老版本(如LibSass)对单位运算的兼容性更宽松,所以Codepen上的旧代码能正常运行,但本地用新版Sass编译就会报错。
修复方法

针对报错的代码行,有两种简洁的修复方式:

方式1:使用Sass内置的degrees()函数(推荐)

Sass提供了degrees()函数,可直接将弧度值转换为带deg单位的角度值,避免单位运算冲突:

$angle: degrees(acos($t/($a + $b)));

方式2:调整运算顺序,先完成数值计算再添加单位

如果不想使用内置函数,可以先把弧度转成角度的无单位比例,再乘以1deg:

$radian: acos($t/($a + $b));
$angle: ($radian * 180 / 3.14159) * 1deg;

额外注意:避免acos参数超出范围

acos的参数必须在[-1, 1]之间,否则会返回NaN导致编译错误。可以用clamp()函数限制参数范围,增强代码健壮性:

$angle: degrees(acos(clamp(-1, $t/($a + $b), 1)));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 13:15:00