应使用@import (css) "~normalize.css/normalize.css",因Less默认将@import视为Less代码解析,直接导入CSS会因语法不兼容报ParseError或样式丢失,且必须置于入口文件最顶部以确保优先级。

直接用 normalize.css,别手写 * { margin: 0; padding: 0; } —— 后者会破坏表单控件、列表语义和可访问性,而 normalize.css 是经过大量浏览器验证的轻量级修正方案,保留合理默认,只修复不一致。
为什么不能直接 @import "normalize.css"?
Less 编译器会把纯 CSS 文件当 Less 代码解析,导致语法错误或样式丢失。常见报错如 ParseError: Unrecognised input,或构建时中断在 normalize.css 第一行。
-
@import "normalize.css"→ Less 尝试编译它,失败 -
@import (reference) "normalize.css"→ 不输出样式,重置失效 -
@import (css) "normalize.css"→ 正确:跳过解析,原样注入 CSS
如何在 Less 中正确引入 normalize.css
必须用 @import (css) 模式,并确保路径准确、位置靠前。
- Webpack/Vite 项目:用
@import (css) "~normalize.css/normalize.css";(~自动解析 node_modules) - 本地文件:用相对路径,如
@import (css) "../node_modules/normalize.css/normalize.css"; - 必须放在所有其他
@import和样式规则之前,否则会被后续样式覆盖 - 如果用了
postcss-preset-env,检查是否已自动注入部分 normalize 行为,避免重复
Less 里定义自定义 reset 规则要注意什么?
如果你非要自己写 reset(比如补 img { display: block; } 或统一 box-sizing),得避开 Less 默认作用域陷阱。
立即学习“前端免费学习笔记(深入)”;
-
@import "reset.less"只在当前文件生效,变量/Mixin 不跨文件可用 - 想让
.clearfix()或@base-font-size在button.less里也能用,每个用到的文件都得写:@import (multiple) "./reset.less"; -
(multiple)允许重复导入,避免 “variable is already defined” 报错 - 别用
@import (css)导入自己的reset.less,否则变量和 Mixin 完全失效
真正容易被忽略的是加载顺序和作用域隔离——normalize.css 必须是第一个生效的样式,而自定义 Less 变量/Mixin 必须显式、重复导入才能跨文件复用,没有“全局一次导入就到处可用”这回事。


















