tailwind css 的“按需”指构建期扫描源码中字面量类名并生成对应 css,而非运行时引入;必须用 @tailwindcss/vite 插件、正确配置 content、仅保留三行 @tailwind 指令,且动态类需加入 safelist。

不能按需“引入样式”,只能按需“生成样式”。Tailwind CSS 本身不提供类似 import 'tailwindcss/utilities.css' 这样的按需 CSS 文件;它的“按需”是构建期行为,靠 content 扫描 + JIT 编译实现——你写的类名在源码里出现,它才生成对应 CSS 规则。
为什么 import "tailwindcss/tailwind.css" 是错的
这个路径指向的是 Tailwind v2 时代的全量预编译 CSS(约 4MB),在 Vue3 + Vite 项目中直接 import 它会导致:
- 打包体积暴涨,
npm run build后 CSS 文件可能超 1MB - JIT 模式完全失效,
hover:scale-110、md:text-lg等变体类不生效 -
content配置被绕过,动态 class(如:class="`text-${size}`")无法识别,除非手动加safelist - 与 Element Plus、Ant Design Vue 等组件库样式冲突,按钮失色、弹窗错位
必须用 @tailwindcss/vite 插件
这是 Vue3 + Vite 生态下唯一官方推荐、且能正确启用 JIT 的方式。它替代了旧版 postcss.config.js 手动配置,自动处理:
- CSS 注入时机(确保
@tailwind指令被 PostCSS 正确解析) - 热更新响应(改完
.vue文件,样式实时刷新) - 类名扫描范围(自动识别
.vue、.ts、.tsx中的字面量class绑定)
安装与配置:
npm install -D @tailwindcss/vite tailwindcss@3.4.17
在 vite.config.js 中启用:
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import tailwindcss from '@tailwindcss/vite'
export default defineConfig({
plugins: [vue(), tailwindcss()],
})
content 字段写错 = 样式白配
tailwind.config.js 的 content 不是可选配置,而是 Tailwind 提取类名的唯一依据。漏掉 .vue 后缀,或路径没覆盖到异步组件目录,bg-blue-500 就不会出现在最终 CSS 里。
- 必须包含
.vue:例如"./src/**/*.{vue,js,ts,jsx,tsx}" - 若用了
defineAsyncComponent或import()加载页面,路径要显式加上,比如"./src/views/**/*.{vue}" - 不要用已废弃的
purge字段;v3+ 只认content - 开发时可临时加
"./public/**/*.html"支持静态页
入口 CSS 文件只能有三行 @tailwind 指令
新建 src/assets/tailwind.css,内容严格为:
@tailwind base; @tailwind components; @tailwind utilities;
这三行缺一不可,顺序也不能调换:
-
@tailwind base提供 CSS 重置和默认排版(否则 Element Plus 按钮会无背景、文字挤在一起) -
@tailwind components支持@layer components自定义组件类 -
@tailwind utilities是你每天写的flex、md:grid、dark:bg-gray-800的来源 - 不能把这三行拆开放到不同文件,也不能混入其他 CSS 规则(如
.my-btn { }),否则 PurgeCSS 可能误删未用类
然后在 main.ts 顶部唯一导入:import './assets/tailwind.css';不要放在 App.vue <style></style> 里,Vite 不识别。
真正容易被忽略的点是:Tailwind 的“按需”只对源码中**字面量出现的类名**有效。class="text-{{size}}" 或 :class="['p-4', `text-${color}`]" 这类运行时拼接,必须显式写进 safelist,否则 build 后就消失——这不是 bug,是设计使然。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











