main.js 中 import 是唯一可靠方式,因 Vue 2+webpack 将其作为模块依赖交由 css-loader/style-loader 处理,确保样式参与构建、提取及全局生效;其他方式如 @import 或 scoped 引入均会失效或污染。
必须在 main.js 中 import,且不能用 @import 或 方式替代 —— 否则要么失效,要么污染全局。
Vue 2(尤其搭配 webpack + vue-loader)会把 main.js 中的 import './xxx.css' 当作模块依赖处理,交由 css-loader 和 style-loader 注入到 <head> 的 <style> 标签中。这是唯一能确保:样式参与构建、被提取到 CSS 文件(生产环境)、且作用域为整个应用的路径。
其他常见错误包括:
@import 写在 <style scoped> 里 → 实际仍被 scoped 属性隔离,第三方类名(如 .el-button)根本匹配不到App.vue 的 <style> 里写 @import → 这是无效语法,vue-loader 不解析它,编译直接报错或静默忽略<style src="./xxx.css" scoped> → scoped 会让 Vue 给所有选择器加属性选择器(如 .reset[data-v-xxx]),彻底废掉 reset.css 的意图全局引入 ≠ 全局污染。关键在 CSS 本身是否“可预测”和“有边界”。不是禁用全局引入,而是控制它的影响范围:
normalize.css、reset.css、自定义的 variables.css(仅含 :root 变量)或工具类(如 .clearfix).user-card、.header-nav),这类样式应进组件或布局文件!important 或用 >>> 深度选择器限定在特定容器内* { margin: 0 })或标签选择器(button { ... }),它们极易穿透 scoped 边界路径写错或加载方式不对,会导致开发时样式缺失、生产环境白屏,或热更新失效:
import './assets/css/reset.css'(相对路径)或 import '@/assets/css/variables.css'(别名路径,需确认 webpack alias 中 @ 指向 src/)import 'assets/css/reset.css'(缺 ./ 或 @/,webpack 默认当 npm 包找)import './assets/css/reset.css?inline'(会被当成字符串模块,不注入样式)css.extract(如 vue-cli 3+ 默认),全局 CSS 会打到 app.css;若关闭提取,它会随 JS bundle 一起注入,影响首屏渲染最常被忽略的一点:全局 CSS 的加载顺序决定了覆盖优先级。如果你在 main.js 里先 import 了 element-ui/lib/theme-chalk/index.css,再 import 自己的 override.css,那后者才能生效;反过来就白写了。
tlwdr7650路由器没有wps按钮(tlwdr7650路由器没有wps按钮怎么办)
tlwdr7632扩展器电脑怎么设置(tlwdr7632扩展器电脑设置方法)
tlwda6332re安装教程(tlwda6332re如何安装)
tlwdr7632扩展器手机怎么设置(tlwdr7632扩展器手机设置方法)
tlxdr3010怎么设置网速快(tlxdr3010网速快设置方法)
tlwdr5620易展版怎么克隆(tlwdr5620易展版克隆方法)