less 4.0+ 中 100px / 4 不计算是因编译器将未括号的 / 视为 css 字面量而非运算符,必须写成 (100px / 4) 或 100px ./ 4 才触发计算,否则输出无效 css 被浏览器静默丢弃。

Less 里写 100px / 4 不会算出 25px,而是原样输出成 100px / 4,浏览器直接忽略这条 CSS 规则——这不是插件没装好,也不是配置漏了,是 Less 4.0+ 的硬性行为。
为什么 100px / 4 编译后不计算
Less 4.0 把所有未包裹在括号里的 / 当作 CSS 字面量处理,不参与运算。它不是“忘了算”,而是明确设计为:除非加括号或用 ./,否则 / 就是分隔符。
-
width: 100px / 4;→ 输出width: 100px / 4;,DevTools 里该行被划掉(CSS 语法错误,静默丢弃) -
@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 单位位置错,结果不可预期。
calc() 在 Less 中失效怎么修
Less 会提前解析 calc(100% - 44px) 里的 -,算成 calc(56%),根本没传给浏览器。
- 必须用转义:
height: calc(~"100% - 44px"); - 带变量时,变量要放在字符串内或用括号包裹:
calc(~"100% - @{extra}");或calc(~"100% - "(@extra)); - 运算符两侧必须有空格:
~"100vh - 133px"✅,~"100vh-133px"❌(CSS 层面就无效)
别白配 math 参数
math: "always" 这类字符串配置在 Less 4.0 已移除,只认整数 math: 1 或 math: 2,且仅影响部分构建工具对旧语法的兜底兼容,**完全不改变除法是否执行**。
- Vite 中设
css.preprocessorOptions.less.math = "always"→ 无效 - webpack 的
less-loader传{ math: 'always' }→ 等同于没写 -
strictMath控制的是无单位数值运算(如10px + 5),和/行为无关
漏一个括号,可能让整个组件高度塌陷,而构建不报错、控制台无提示——你得手动检查生成的 CSS 文件,或用 grep 扫描含 / 的声明行,确认是否被原样输出。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











