必须用@import (css),因less默认将所有@import当less源码解析,遇纯css规则(如html{margin:0;})会因语法不兼容抛parseerror;路径须用相对路径或配合less-loader的paths配置加~别名,且javascriptenabled须为false。

必须用 @import (css),其他方式不是报错就是埋雷——Less 默认把所有 @import 当作 Less 源码解析,.css 后缀根本不管用。
为什么直接 @import "xxx.css" 会报错
Less 解析器看到 html { margin: 0; } 这类纯 CSS 规则时,会卡在语法上:属性值没引号、伪类写法不识别、分号缺失……直接抛 ParseError: Unrecognised input。这不是路径问题,是解析模式错配。
- 错误现象:Webpack 构建中断,报错定位到
normalize.css第一行 - 哪怕文件能被找到,只要内容不符合 Less 语法规则,就必然失败
-
@import "reset.css"和@import "reset.less"在 Less 看来没有本质区别——它只认@import语句本身
@import (css) 的路径怎么写才真正生效
加了 (css) 只解决“不报错”,但路径不对照样引入失败,尤其在 Webpack + less-loader 环境下。
- 别用 Webpack alias(如
@/styles/xxx.css),less-loader不认这个,得用相对路径:@import (css) "../assets/css/antd.css"; - 想用别名,必须在
less-loader配置里加paths选项,然后写@import (css) "~assets/css/antd.css";(注意~前缀) - 如果用了
javascriptEnabled: true,@import (css)可能被忽略或行为异常——该选项有安全风险,且与(css)标识冲突,应保持false
引入的 CSS 文件里含 @import url() 为什么没加载
Less 编译器只处理顶层 @import 语句,不会递归解析被引入 CSS 文件内部的原生 @import url()。
- 后果:你写了
@import (css) "a.css",而a.css里有@import url("b.css");,那b.css根本不会加载 - 解法只有两个:
— 把a.css里的@import url()拆出来,在 Less 入口里逐条声明:@import (css) "b.css"; @import (css) "a.css";
— 或者彻底放弃@import (css),改用 Webpack 的css-loader:在 JS 里import 'a.css',由构建工具统一管理加载时机和依赖
真正难缠的不是语法报错,而是 @import (css) 成功后样式却没生效——那八成是加载顺序或 specificity 被其他 CSS 覆盖了,得去 DevTools 里查计算样式,而不是继续改 Less 文件。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











