tailwind css jit引擎仅扫描content配置路径中源码里的类名字符串,不解析html的link或js的import引入的css文件内容,因此自定义样式必须通过@import在tailwind.css顶部引入并确保路径被content覆盖,否则类名无法生成。

直接在 tailwind.css 文件顶部用 @import 引入,是最简单且可靠的方式;其他方式(如在 HTML 中 link、或在 JS 里 import CSS)会导致类名不被 JIT 引擎识别,最终样式丢失。
为什么不能在 HTML 或 JS 里引入自定义 CSS?
Tailwind 的按需生成(JIT)机制只扫描 content 配置中指定的文件路径里的**类名字符串**,而不是实际加载的 CSS 文件内容。你在 HTML 里 <link rel="stylesheet"> 或 JS 里 import './custom.css',哪怕 CSS 里写了 .my-btn { ... },只要 HTML/JS/TSX 模板里没出现 my-btn 这个字符串,它就不会被打包进最终 CSS —— 更别说支持 md:my-btn 或 dark:my-btn 了。
@import 必须放在 tailwind.css 的最前面
@import 语句必须紧贴 @tailwind base 之前,否则变量和自定义类可能无法被后续层(@tailwind components / @tailwind utilities)正确解析:
@import './styles/variables.css'; @tailwind base; @tailwind components; @tailwind utilities;
- 如果
variables.css定义了--primary: #3b82f6,那么@layer components里写@apply bg-[--primary]才能生效 - 如果把它放到
@tailwind utilities后面,Tailwind 会忽略该导入,变量不可见 - 不支持
@import嵌套多层(比如 A.css @import B.css,B.css @import C.css),建议扁平化管理
自定义 CSS 文件里写什么才安全?
仅限三类内容:CSS 自定义属性(:root 变量)、@layer base / @layer components 块、以及通过 @apply 复用的工具类封装。避免直接写裸类名:
- ✅ 安全:
:root { --accent: #8b5cf6; }或@layer base { * { box-sizing: border-box; } } - ✅ 安全:
@layer components { .card { @apply rounded-lg shadow p-4 bg-white; } } - ❌ 危险:
.hidden-mobile { display: none; }—— 这个类不会被 JIT 扫描,除非你同时在 HTML 里硬写hidden-mobile字符串,且未配置响应式前缀
真正容易被忽略的是:即使 @import 成功,若自定义文件路径没被 content 数组覆盖(例如漏了 ./src/styles/**/*.css),其中用到的类名也不会触发生成 —— 尤其当这些类是通过 JS 动态拼接(如 className={\`bg-\${color}\`})时,静态扫描根本捕获不到。
前端入门到VUE实战笔记:立即使用
在学习笔记中,你将探索 前端 的入门与实战技巧!











