less 4.0 中除法必须用 () 或 ./ 显式标记,否则 / 视为纯字符;如 100px / 4 编译后仍为 100px / 4,浏览器忽略该声明,不报错但失效。

Less 4.0 中除法不会自动计算,不是配置问题,是语法强制要求——必须用 () 或 ./ 显式包裹或标记,否则 / 就是纯字符,不参与运算。
为什么 100px / 4 编译后还是 100px / 4
这不是编译器“没识别”,而是 Less 4.x 硬编码规则:所有裸露的 /(即不在括号内、也不带 . 前缀)一律视为 CSS 字面量。浏览器收到 width: 100px / 4; 会直接忽略该声明,控制台无报错,DevTools 里能看到它被标灰失效。
- 常见误判:Webpack 构建没报错 → 就以为样式生效了
- VS Code 的 Easy Less 插件若用的是旧版引擎,可能“假装编译成功”,但输出的是非法 CSS
-
line-height: 20px / 16px;这种写法在 Less 4.x 中永远不等于1.25,除非改写为(20px / 16px)
(100px / 4) 和 100px ./ 4 的区别与选择
两者语义等价,都强制触发除法,但细节差异影响可维护性:
-
(100px / 4)是首选:支持嵌套单位(如(2rem / 2)),可读性强,和 CSS 函数(如calc())风格一致 -
100px ./ 4是 Less 特有语法:./必须与左右操作数各有一个空格,100px./4或100px . / 4都会解析失败 - 反例:
(100 / 4)px报Operation on an invalid type—— 单位不能后置在括号外;100 / 4px同样错,单位位置颠倒
乘、加、减为什么不用括号,但依然可能出错
+、-、* 不受括号限制,但单位兼容性检查照常生效:
-
margin: 10px * 2;✅ 输出margin: 20px; -
height: 10px + 2em;❌ 报错:单位不可加,px和em无换算基准 -
font-size: 14px / 1.5;❌ 错误写法 —— 这是 CSS 行高简写,不是 Less 运算,应写成font-size: (14px / 1.5);或直接用font: 14px/1.5 sans-serif;(后者由 CSS 解析,不进 Less 计算)
别被 math 和 strictMath 配置带偏
你在 Webpack、Vite 或命令行里看到的 math: "always"、math: 1、strictMath: true 全部和除法是否执行无关:
-
math参数在 Less 4.x 中只接受1或2,且仅影响部分构建层对旧代码的兼容提示,**不改变除法行为** -
strictMath: true控制的是「无单位数值能否参与运算」,比如10px + 5会报错,但它对100px / 4完全没作用 —— 后者根本不会进入运算阶段 - 真正起作用的只有写法:
/在括号里或前面带.,否则就是死的
最容易被忽略的一点:没有全局开关,没有默认兜底,也没有静默降级。漏掉一个括号,就少一行有效 CSS,而你得靠肉眼翻生成结果或用工具扫 / 字符才能发现 —— 它不报错,只沉默失效。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











