less 4.x中除法必须显式用括号(100px / 4)或./语法(100px ./ 4)标记,否则/被视为css字面量原样输出导致样式静默失效;@import须带.less后缀;函数参数必须带单位;嵌套中父级变量不可隐式访问。

/ 运算符不再自动计算,这是 Less 4.x 的硬编码行为变更,不是配置遗漏或工具链问题 —— 漏掉一个括号,样式就静默失效,且构建不报错、控制台无提示。
除法必须显式标记,否则原样输出为 CSS 字面量
Less 4.x 彻底移除了对裸露 / 的数学解析逻辑。所有未包裹的除法都会被当作文本原样输出,浏览器因语法非法直接丢弃整条声明。
-
width: 100px / 4;→ 编译后仍是width: 100px / 4;,DevTools 中该行显示为灰色、无效 -
line-height: 20px / 16px;→ 行高不生效,因为浏览器不识别该写法 -
@gap: 1rem / 2;→ 变量值变成字符串"1rem / 2",后续引用全部崩
唯一有效的两种写法:
-
width: (100px / 4);(推荐:语义清晰、单位混合安全、和calc()风格一致) -
width: 100px ./ 4;(注意./前后必须有空格;100px./4或100px . / 4都会报错)
@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";→ 正确,但要先确认node_modules/antd/dist/antd.less真实存在(Ant Design v5 已移除所有.less源码)
颜色与数学函数参数必须带单位,否则编译报错
Less 4.x 移除了隐式单位推断,所有数值型参数必须是合法数值类型(含单位或百分比),不能是纯数字。
-
lighten(@color, 10)→ 报错:Operation on an invalid type -
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
嵌套中父级 @ 变量不可隐式访问
Less 4.x 强化块级作用域,嵌套选择器内部不再继承上层 @ 变量,这不是 bug,是设计变更。
-
.btn { @size: 12px; &-large { font-size: @size; } }→ 报错:Variable @size is undefined - 解决方式一:把变量提至文件顶层或全局作用域
- 解决方式二:在嵌套块内重新声明,如
&-large { @size: 12px; font-size: @size; } - 不能依赖
&自动“穿透”访问父级变量
/ 的行为由 Less 编译器底层硬编码决定,不经过任何配置项(math、strictMath 都不影响它),也不随构建工具变化 —— 漏掉一个括号,就可能让某个组件样式静默失效,且无构建报错提示。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











