Tailwind CSS v4 指南:新引擎与 CSS-first 配置

Tailwind CSS v4 是框架的一次从零重写:官方基准测试显示,全量构建提速 3.5 倍以上,增量构建提升 8 倍以上,而"未产生新 CSS"的增量构建甚至可以快上百倍、以微秒计。对建站团队来说,这意味着大型项目也能保持近乎即时的样式反馈——保存文件、刷新页面,改动几乎同步出现,开发手感接近"无构建"。

v4 的改动不是小修小补,而是把"配置"这个心智负担从 JS 迁移到了 CSS:不再需要 tailwind.config.js、不再维护 content 数组,主题变量、断点、自定义颜色全部写进 CSS 本身。下面从新引擎、安装、配置到升级,把 v4 的关键变化拆开讲清楚。

Tailwind 相关模板可参考本站Tailwind 页面模板,也属于前端搭建分类下的主流样式方案。

一、新引擎与现代 CSS

v4 充分利用了现代 CSS 能力:原生级联层(@layer)更精细地控制样式优先级、@property 注册自定义属性(可动画化渐变)、color-mix() 让任意颜色(包括 CSS 变量与 currentColor)都能调透明度、逻辑属性简化 RTL 支持并减小生成体积。同时默认调色板从 rgb 全面升级到 oklch,色彩更鲜艳。

这些特性带来的实际收益很具体:以渐变为例,v3 里 bg-gradient-to-r 只能做线性渐变,v4 用 bg-linear-to-rbg-radialbg-conic 分别覆盖线性、径向和锥形渐变;配合 color-mix(),你甚至能直接给 currentColor 调透明度,很多过去需要写自定义 CSS 的配色场景现在一行工具类就够。

二、简化安装

v4 把安装压缩到"三条命令":安装 tailwindcss@tailwindcss/postcss,添加 PostCSS 插件,然后在 CSS 里写一行 @import "tailwindcss"。不再需要 @tailwind 指令、tailwind.config.jscontent 数组——模板文件通过启发式自动检测(自动忽略 .gitignore 与二进制文件),必要时可用 @source 指令补充来源。

以最常见的 Vite 项目为例:

npm install tailwindcss @tailwindcss/vite

vite.config.js 里注册插件,然后在入口 CSS 里 @import "tailwindcss",就完成了整个接入。对比 v3 的 tailwind.config.js + postcss.config.js + @tailwind base/components/utilities 三连,配置项少了一大半。

三、CSS-first 配置与主题变量

配置从 JS 迁移到 CSS:在 @theme 中定义设计令牌即可扩展间距、颜色、断点与字体。

@import "tailwindcss";

@theme {
  --color-avocado-500: oklch(0.84 0.18 117.33);
  --breakpoint-3xl: 1920px;
  --font-display: "Satoshi", "sans-serif";
}

所有设计令牌默认生成对应的 CSS 变量,运行时可直接引用,也可传给动画等第三方库。这意味着"设计系统"和"代码"真正共用同一套变量:设计师给一个色值,开发者把它写进 @theme,整个项目的按钮、边框、渐变都会跟着走。

四、动态工具类与变体

间距类(px-*mt-*w-*)现在由单一 --spacing 变量动态推导,任意数值开箱即用,如 w-17grid-cols-15。新增容器查询(@container/@sm:)、not-* 变体、starting(配合 @starting-style 做入场动画)、3D 变换(rotate-x-*perspective-*)与更丰富的渐变 API(bg-linear-*、锥形/径向渐变)。此外还内置 color-schemefield-sizinginset-shadow-* 等实用工具。

容器查询尤其值得关注:它让组件可以根据"自己所在容器"的宽度而不是视口宽度来响应,写卡片、侧边栏这类可复用组件时,比媒体查询自然得多。一个 @container 加一个 @md:flex-col,就能让同一套组件在窄容器里自动换行堆叠。

五、与构建工具集成

Vite 用户可直接使用官方 @tailwindcss/vite 插件,比 PostCSS 方式更快、配置更少(详见Vite 构建工具指南)。v4 也内置 @import 支持,无需 postcss-import 即可合并多个 CSS 文件。Webpack、Rollup、Svelte、Remix、Nuxt 等生态也都有对应的官方或社区接入方式,迁移路径基本是"换掉旧插件、改一行 import"。

六、从 v3 升级

官方提供了自动化升级工具与升级指南:先跑 npx @tailwindcss/upgrade 处理大部分改动,再人工检查被重命名的类(如 bg-gradient-*bg-linear-*)、被移除的配置项与阴影/边框默认值变化。

升级时最容易踩的坑有三个:一是项目里用到了被移除的旧工具类(比如 flex-shrink-0 改为 shrink-0 后的旧写法);二是自定义主题写在 tailwind.config.js 里、没迁移到 @theme,导致类名全部失效;三是 @import 顺序改变后,原有 CSS 的层叠结果和以前不一样。建议升级后跑一遍视觉回归,重点核对按钮、阴影、边框这些样式敏感区域。响应式页面结构可参考响应式导航模板HTML 页面模板

七、v3 与 v4 关键差异

项目 v3 v4
配置方式 tailwind.config.js CSS 中的 @theme
内容扫描 content 数组手动声明 自动检测 + @source
渐变类 bg-gradient-* bg-linear-* 等
间距单位 固定步长 --spacing 动态推导
全量构建 基准 快 3.5 倍以上

常见问题

升级后样式全乱? 优先检查是否还有残留的 tailwind.config.js 配置没迁移到 @theme,以及项目里是否混用了 v3 和 v4 的插件。

某个类没生效? 确认文件是否被自动内容检测覆盖;如果文件在 node_modules.gitignore 内,需要用 @source 手动声明。

原文来源:https://tailwindcss.com/blog/tailwindcss-v4;升级指南:https://tailwindcss.com/docs/upgrade-guide