Less 4.x 中 math 配置项完全失效,除法是否计算仅取决于写法:必须用 (100px / 4) 或 100px ./ 4,其他形式如 100px / 4 均原样输出导致 CSS 解析失败。

Less 4.x 中根本不存在可生效的 math 配置项,所谓“调整 math 配置”是无效操作 —— 除法行为已硬编码,不靠配置开关,只靠写法。
Less 4.x 的 math 配置参数完全失效
你在 Webpack、Vite 或命令行中写的 math: 1、math: "always"、--math=1 全部被忽略。Less 4.0+ 已移除所有 math 模式,API 层面不再接收该字段。构建工具日志不会报错,但也不会起作用。
-
lessc --math=1 input.less:命令执行成功,但100px / 4仍原样输出为100px / 4 - Vite 中
css.preprocessorOptions.less.math = 1:配置被丢弃,vite 内部调用的 Less 4.x 编译器根本不读这个字段 - Webpack +
less-loader传入{ math: 1 }:loader 会透传给 Less,而 Less 4.x 直接无视
真正决定除法是否计算的只有两种写法
Less 4.x 只认这两种形式,其他一律当纯字符处理,不计算、不报错、不警告:
-
width: (100px / 4);—— 推荐首选,语义清晰,支持单位混合(如(2rem / 2)) -
width: 100px ./ 4;——./是 Less 特有除法运算符,注意左右必须有空格;100px./4会解析失败
反例:width: 100px / 4; → 输出 width: 100px / 4;,浏览器 CSS 解析失败,样式静默丢失。
立即学习“前端免费学习笔记(深入)”;
为什么 strictMath 或其他配置也救不了除法
strictMath: true 控制的是「无单位数值能否参与运算」,比如 10px + 5 是否允许隐式转成 10px + 5px。它和除法是否执行毫无关系。
-
strictMath: true下,100px / 4依然不计算,照样输出原样 -
strictMath: false下,100px / 4同样不计算 - 所有与除法无关的配置(
paths、javascriptEnabled、sourceMap)都不影响/的行为
最容易被忽略的是:这个规则不看环境、不看工具链、不看配置层级 —— 只要底层是 Less 4.x,就强制要求你手动加括号或写 ./。漏掉一个,生成的 CSS 就非法,而浏览器 DevTools 里只显示声明被忽略,控制台连 warning 都没有。


















