less v4 通过收紧语义、暴露隐含风险、强制显式表达提升代码可靠性:除法需括号或 ./,@import 必须带 .less 后缀,颜色函数参数须带单位,嵌套块无法隐式访问父级变量。

Less v4 并不是靠“引入新特性”来提升开发体验的,而是通过**收紧语义、暴露隐含风险、强制显式表达**,倒逼开发者写出更可靠、可维护、可预期的样式代码。它没加多少炫技功能,但把过去容易静默出错的地方全拎出来亮红灯。
除法运算必须显式括号或 ./,否则直接失效
旧写法 width: 100px / 4; 在 v4 中输出原样 CSS:width: 100px / 4;,浏览器忽略该声明,DevTools 看不到效果,且构建不报错——这是最危险的静默失效。
- 正确写法只有两种:
width: (100px / 4);(推荐)或width: 100px ./ 4;(注意./前后必须有空格) -
line-height: 20px / 16px;、(100 / 4)px、100 / 4px全部非法,会编译失败或输出错误值 - 这个规则由编译器底层硬编码决定,不受
math、strictMath等配置影响
@import 必须带 .less 后缀,路径不再自动推测
v4 关闭了路径推测机制:@import "mixins" 不再尝试匹配 mixins.less 或 mixins.css,而是严格按字面路径查找。
- 必须写成
@import "./mixins.less";或@import "~antd/dist/antd.less"; - 如果
node_modules/antd/dist/antd.less实际不存在(比如 Ant Design v5 已移除 .less 源码),就会报ReferenceError: variable is undefined——但错误提示指向变量未定义,真实原因是导入失败 - 排查时要先确认文件物理存在,再查变量声明位置
颜色函数参数必须带单位,lighten(@color, 10) 直接报错
v4 移除了隐式单位推断,所有数值类参数必须显式携带单位或百分比。
-
lighten(@color, 10%)✅,fade(@primary, 20%)✅ -
lighten(@color, 10)❌,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。
- 变量必须提至文件顶层、全局作用域,或在嵌套块内重新声明
- 不能依赖
&“穿透”访问上层变量,这不是 bug,是设计变更 - 这对组件级局部变量管理是个提醒:嵌套 ≠ 作用域继承
%、多嵌一层却忘了提变量——都可能让样式在某个组件里彻底消失,且毫无警告。前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











