less 4 中 math 配置不改变除法是否执行,仅影响语法解析:math: 1 接受但不计算 100px / 4,math: 2 强制报错,其他值被忽略;必须显式写为 (100px / 4) 或 100px ./ 4 才能运算。

Less 4 中没有“配置严格数学模式”的操作——math 配置项不是开关,而是兼容策略提示,且它不改变除法是否执行这一核心行为。你改了配置,100px / 4 依然不会算,浏览器依然静默丢弃该 CSS 声明。
为什么 math: "always" 或 math: 1 完全无效
Less 4.x 编译器硬编码将所有未包裹的 / 视为 CSS 字面量,不参与计算。所谓 math 配置只影响“是否允许该写法被解析为表达式”,而非“是否执行运算”:
-
math: 1:接受100px / 4是合法语法,但依然不计算 → 输出原样100px / 4 -
math: 2:直接报错NameError或Operation on an invalid type,强制你改写 -
math: "always"、math: 0等旧值被静默忽略,等价于没配
Vite / Webpack / CLI 中 math 的正确写法位置
即使配置生效范围有限,也必须写在正确位置,否则连兼容提示都收不到:
- Vite:
css.preprocessorOptions.less.math = 2(注意是数字,不是字符串) - Webpack + less-loader:
options: { math: 2 },必须在less-loader的options下 - 命令行:
lessc --math=2 input.less,=不能省略
写错位置(比如塞进 additionalData 或 modifyVars)等于没写。
真正起作用的只有两种写法,且必须手动加
所有除法必须显式标记,没有例外,构建工具和配置层无法帮你补括号:
-
width: (100px / 4);—— 推荐:语义清晰、单位兼容好、支持嵌套如(2rem / 2) -
width: 100px ./ 4;—— 注意./前后必须有空格;100px./4或100px ./4都会报错
反例:(100 / 4)px 报 Operation on an invalid type;100px / 4px 单位位置错,结果不可预期。
最容易被忽略的是:VS Code 插件、CI 日志、甚至 lessc 命令行都不会警告你漏了括号。你得手动检查生成的 CSS 文件,或用正则扫描含 / 的声明行,确认是否被原样输出——漏一个,就可能让整个组件高度塌陷,而控制台毫无提示。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











