less 4.x强制除法加括号或用./,否则原样输出导致浏览器静默丢弃;嵌套中父级@变量不可访问;函数参数须带单位;@import必须含.less后缀。

Less 4.x 对除法运算强制括号,旧写法直接静默失效
旧版 Less(3.x)把 100px / 4 当作数学表达式计算,新版默认不解析裸露的 / —— 它原样输出成 width: 100px / 4;,浏览器当非法 CSS 直接丢弃整行(DevTools 中显示为灰色 strikethrough)。这不是报错中断,而是“编译成功、样式消失”。
- 必须写成
(100px / 4)或100px ./ 4(注意./前后都要有空格) -
@gap: 1rem / 2;→ 变量值变成字符串"1rem / 2",后续所有引用全崩 - 哪怕只有一处漏括号,比如
line-height: 20px / 16px;,也会导致行高失效且无控制台警告
嵌套作用域收紧,父级 @ 变量无法穿透访问
Less 4.x 强化块级作用域,&-modifier 内部不再自动继承外层定义的 @ 变量。旧写法如 .btn { @size: 12px; &-large { font-size: @size; } } 会直接报 Variable is undefined。
- 变量必须提至文件顶层(如最开头声明
@size: 12px;) - 或在嵌套块内重新声明:
&-large { @size: 12px; font-size: @size; } - Mixin 内部定义的
@变量也不会泄漏到调用点外部,作用域完全隔离
函数参数单位检查变严格,缺单位就报 Operation on an invalid type
Less 4.x 移除了隐式单位推断,所有数值型参数必须显式带单位或百分比,否则编译失败。
-
lighten(@color, 10)→ 报错;必须写lighten(@color, 10%) -
percentage(1/2)→ 输出字符串"1/2";应写percentage((1/2))或percentage(0.5) -
round(10.4)返回纯数字10,不是10px;需手动补单位:round(10.4) * 1px
@import 路径匹配机制关闭,不带 .less 后缀就找不到文件
Less 4.x 关闭路径推测,@import "mixins" 不再尝试匹配 mixins.less 或 mixins.css,而是严格按字面路径查找。
-
@import "./variables";→ 报ReferenceError: variable is undefined -
@import "./variables.less";→ 正确 -
@import "~antd/dist/antd.less";→ 必须确认该路径真实存在(Ant Design v5 已移除所有.less源码)
真正难排查的是那些不报错、不中断构建、却让样式静默消失的地方:一个漏掉的括号、一行错位的注释、一个没加单位的函数调用——它们都不会打断 CI,但上线后用户就看不到正确样式。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











