less 4.0+ 中 100px / 4 不计算而原样输出,因未加括号的 / 被视为 css 字面量分隔符;有效写法仅 (100px / 4) 或 100px ./ 4,math 配置对此无效。

Less 4.0+ 中写 100px / 4 不会算出 25px,而是原样输出 100px / 4,浏览器直接忽略该 CSS 声明——这不是配置漏了或插件没装对,是编译器明确把未括号的 / 当作 CSS 字面量分隔符,根本没走运算流程。
为什么 width: 100px / 4 编译后无效
Less 4.0 起,所有未包裹在括号里的 / 都不参与数学运算。它不是“算错了”,而是被当成普通字符保留在输出中:
-
width: 100px / 4;→ 输出width: 100px / 4;(CSS 语法错误,DevTools 里该行被划掉) -
@size: 16px / 2;→@size值变成字符串"16px / 2",后续引用全失效 - VS Code 的 Easy Less 插件 1.7.0+ 完全遵循此规则,不会自动补括号
必须用的两种有效除法写法
只有以下两种写法能真正触发计算,其他都无效:
-
width: (100px / 4);—— 推荐。语义清晰,支持嵌套如(2rem / 2),单位兼容稳 -
width: 100px ./ 4;——./是 Less 特有触发符,注意前后必须有空格:100px ./ 4✅,100px./ 4❌,100px ./4❌
反例:(100 / 4)px 报 Operation on an invalid type;100 / 4px 单位位置错,结果不可预期。
math 配置完全不起作用
Less 4.0 已移除 math: "always" 这类字符串配置,只认整数 math: 1 或 math: 2,且仅影响部分构建工具对旧语法的兜底兼容,完全不改变除法是否执行:
- Vite 中设
css.preprocessorOptions.less.math = "always"→ 无效 - webpack 的
less-loader传{ math: 'always' }→ 等同于没写 -
strictMath控制的是无单位数值运算(如10px + 5),和/行为无关
乘加减不用括号,但单位要匹配
加、减、乘本身不要求括号,但单位混合仍会出错:
-
margin: 10px * 2;→ 正确,输出margin: 20px; -
height: 10px + 2em;→ 报错:单位不可加 -
font-size: 14px + 2;→ 若strictMath: false可能隐式转成14px + 2px,但不推荐依赖 - 混合运算如
@a + @b / 2,即使math: 1也建议加括号:@a + (@b / 2)
漏一个括号,可能让整个组件高度塌陷,而构建不报错、控制台无提示——你得手动检查生成的 CSS 文件,或用 grep 扫描含 / 的声明行,确认是否被原样输出。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











