在 Nuxt.js 项目中,通过 nuxt.config.js 的 css 数组引入 CSS 文件是实现全局样式最直接的方法。但实际使用中,关于加载顺序、作用域和 SSR 兼容性的细节往往容易被忽视,稍不注意就可能踩坑。 先说核心结论:在 nuxt.config.js 的 css 数组中直接填写路径
nuxt.config.js 的 css 数组引入 CSS 文件是实现全局样式最直接的方法。但实际使用中,关于加载顺序、作用域和 SSR 兼容性的细节往往容易被忽视,稍不注意就可能踩坑。

nuxt.config.js 的 css 数组中直接填写路径,样式即可全局生效。但真正考验细节的,是优先级、作用域以及在 SSR 场景下的表现。
bulma.css,但在某个组件中使用了 ,Vue 会自动给组件内所有类名添加属性选择器,导致 Bulma 的原始规则无法覆盖。另一种情况是,你把自定义样式写在 css 数组最前面,而后面引入的 UI 库又将自定义样式重置了。
以下是几个关键原则,值得牢记:
css 数组中的文件会按顺序注入到 中,因此排在后面的 CSS 优先级更高——这与常规 CSS 加载逻辑一致。element-plus),建议将其放在数组末尾,确保它们能覆盖前面的基础样式。css 数组中直接写 @import 语句。Nuxt 不会将其视为真正的依赖处理,容易导致热更新失效,甚至在 SSR 阶段出现样式丢失。.css,如果写成 assets/css/main,只会返回 404。
css: ['~/assets/css/main.css']css: ['~/assets/css/main'](缺少后缀)css: ['./assets/css/main.css'](相对路径,Nuxt 解析时会失败)sass 和 sass-loader 这两个包,然后将路径写为 ~/assets/css/main.scss 即可。
node_modules 中的路径,也支持完整的 CDN 地址。但存在一个大坑:在 SSR 模式下,通过 URL 引入的样式不会在服务端渲染,只能客户端加载,这很容易引发 FOUC(样式闪屏),用户会先看到裸 DOM,等 CSS 加载完成后才恢复正常。
css: ['~/node_modules/swiper/swiper-bundle.min.css']css: ['https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css']link 配置项,同时设置 hid 属性以防止重复插入,而不是直接放在 css 数组中。
generate 模式下,Nuxt 默认不会执行 CSS 提取逻辑——extractCSS: true 是关闭的。结果导致某些动态引入或条件加载的样式没有被打包进 _nuxt/ 目录。
解决方法很简单:
nuxt.config.js 中是否配置了 build: { extractCSS: true },特别是当 target: 'static' 时,此步骤不能省略。css 数组中,不要在 plugins 或组件内部通过 import 动态加载。postcss-import 或 @import 语句,需确认它们能在构建阶段被正确解析。推荐的做法是用 @use 替代,或者直接列在 css 数组中。 中实际插入的顺序,比翻文档查配置要直观得多。
侠游戏发布此文仅为了传递信息,不代表侠游戏网站认同其观点或证实其描述