Less v4 中除法必须显式加括号或用 ./ 写法,否则原样输出导致样式失效;@import 必须带 .less 后缀;颜色函数参数需带单位;嵌套中父级变量不可隐式访问。

Less v4 不再把 / 当作运算符,而是原样输出为 CSS 字符 —— 这不是 bug,也不是配置能绕开的,是编译器硬编码规则。漏掉一个括号,样式就静默失效,DevTools 里连 warning 都没有。
除法必须显式加括号或用 ./
旧写法 width: 100px / 4; 在 v4 中直接输出 width: 100px / 4;,浏览器忽略该声明;line-height: 20px / 16px; 同样失效;@size: 16px / 2; 变量值变成字符串 "16px / 2",后续全崩。
-
width: (100px / 4);—— 推荐首选,语义清晰,支持单位混合(如(2rem / 2)) -
width: 100px ./ 4;—— 注意./前后必须有空格;100px./4或100px ./4都会报错 - 反例:
width: 100 / 4px;、(100 / 4)px、line-height: 20px / 16px;全部不计算,且不报错
@import 路径必须带 .less 后缀
v4 关闭路径推测机制,@import "mixins" 不再尝试匹配 mixins.less 或 mixins.css,而是严格按字面路径查找。
- 必须写成
@import "./variables.less";、@import "~antd/dist/antd.less"; - 用
~别名前,先确认node_modules/xxx下真实存在.less文件(例如 Ant Design v5 已移除所有.less源码) - 变量未定义报错(
ReferenceError: variable is undefined),大概率是导入失败,而非变量本身问题
颜色与数学函数参数必须带单位
v4 移除隐式单位推断,lighten(@color, 10)、fade(@primary, 20) 直接报错 —— 因为 10 和 20 不是合法数值类型。
立即学习“前端免费学习笔记(深入)”;
- 颜色函数第二参数必须是百分比:
lighten(@color, 10%)、fade(@primary, 20%) -
percentage(1/2)输出字符串"1/2",应写成percentage((1/2))或percentage(0.5) -
round(10.4px)输出10px(保留单位),但round(10.4)输出纯数字10
嵌套中父级 @ 变量不可隐式访问
v4 强化块级作用域,.btn { @size: 12px; &-large { font-size: @size; } } 会报 Variable @size is undefined。
- 解决方式一:把变量提至文件顶层或全局作用域
- 解决方式二:在嵌套块内重新声明,如
&-large { @size: 12px; font-size: @size; } -
&不会“穿透”访问上层变量,这不是 bug,是设计变更
真正容易被忽略的是:/ 的行为由 Less 编译器底层硬编码决定,不经过任何配置项(math、strictMath 都不影响),也不随构建工具变化 —— 漏掉一个括号,就可能让某个组件样式静默失效,且无构建报错提示。


















