Tailwind CSS v4:CSS 优先配置时代

Tailwind CSS v4:CSS 优先配置时代

全新的 Oxide 引擎、@theme 内联令牌,以及从 tailwind.config.js 迁移到现代 CSS 优先方案。

2026年6月5日11 分钟阅读作者 Shehzad Asadullah

Tailwind CSS v4 是对自 2017 年以来主导前端样式的实用优先框架的彻底重构。用 Rust 编写的新 Oxide 引擎大幅缩短构建时间,同时引入更贴近现代 Web 开发的 CSS 优先配置模型。无论你是启动全新项目还是迁移现有代码库,理解 v4 的架构对于在 2026 年做出明智的样式决策都至关重要。

Tailwind CSS v4 架构概览,展示 Oxide 引擎与 CSS 优先配置
Tailwind v4 用原生 CSS 自定义属性和新的 Oxide 构建引擎取代了 JavaScript 配置文件。

Oxide 引擎:新基石

早期版本的 Tailwind 依赖 PostCSS 和基于 JavaScript 的扫描管道来检测类用法并生成最终样式表。版本 4 用 Oxide(Rust 驱动的引擎)取代整条管道,解析源文件、解析依赖并以极短时间输出优化后的 CSS。

性能提升并非边际改善。大型 monorepo 的基准测试显示,增量重建时间从数秒降至 200 毫秒以下。对开发体验而言,这意味着保存文件时近乎即时反馈 — 这种体验提升会在每天数百次编辑中累积。

  • 原生速度 — Rust 编译消除了旧版本的 JavaScript 开销。
  • 统一管道 — 导入处理、厂商前缀和嵌套均已内置。
  • 更小输出 — 更激进的死代码消除产出更精简的生产 CSS。
  • 更好的错误信息 — Oxide 在类或指令格式错误时提供更清晰的诊断。

该引擎还引入对级联层、注册自定义属性和 @property 规则等现代 CSS 功能的一流支持,确保 Tailwind 与平台演进保持一致,而非与之对抗。

使用 @theme 的 CSS 优先配置

v4 最显著的变化是从 tailwind.config.js 转向使用 @theme 指令的 CSS 原生配置。你不再导出 JavaScript 对象,而是直接在 CSS 文件中将设计令牌定义为自定义属性。

@import "tailwindcss";

@theme {
  --color-brand-50: oklch(0.97 0.02 250);
  --color-brand-500: oklch(0.55 0.2 250);
  --color-brand-900: oklch(0.25 0.08 250);

  --font-display: "Inter", system-ui, sans-serif;
  --font-mono: "JetBrains Mono", monospace;

  --spacing-page: 1.5rem;
  --radius-card: 0.75rem;

  --breakpoint-3xl: 120rem;
}

这些令牌会自动生成对应的工具类。设置 --color-brand-500 会创建 bg-brand-500text-brand-500border-brand-500 及所有其他颜色工具变体。这种反转 — CSS 驱动配置而非 JavaScript 生成 CSS — 使系统更易检查,也更容易与已使用自定义属性语言的设计工具集成。

自定义属性为何重要

由于主题值是标准 CSS 自定义属性,你可以在运行时覆盖它们而无需重新构建。深色模式、高对比度主题和用户偏好切换变成简单的 CSS 变量替换,而非条件类生成。这为旧版 Tailwind 通过 JavaScript 插件笨拙处理的真正动态主题打开了大门。

从 v3 迁移到 v4

迁移现有项目需要有条不紊的方法。Tailwind 团队提供自动升级工具,但理解手动步骤有助于处理工具无法解决的边缘情况。

从以下迁移检查点开始:

  • @tailwind base/components/utilities 指令替换为单个 @import "tailwindcss" 语句。
  • tailwind.config.js 主题扩展转换为 CSS 入口文件中的 @theme 块。
  • 更新 PostCSS 配置 — v4 捆绑自己的 PostCSS 插件,简化设置。
  • 重命名已弃用的工具类 — 部分 v3 类名已合并或重命名以保持一致性。
  • 审查自定义插件 — 许多 v3 插件现为内置功能或需要 v4 兼容重写。
/* Before (v3) — tailwind.config.js */
module.exports = {
  theme: {
    extend: {
      colors: {
        brand: {
          500: "#3b82f6",
        },
      },
    },
  },
};

/* After (v4) — globals.css */
@import "tailwindcss";

@theme {
  --color-brand-500: #3b82f6;
}

迁移后运行视觉回归测试。虽然 v4 力求输出一致,但默认间距刻度或色彩空间处理的细微差异可能导致像素级设计出现视觉漂移。

新增与改进的工具类

版本 4 提供更广泛的工具类覆盖,减少对任意值和自定义 CSS 的需求。容器查询获得一流工具类支持,无需媒体查询即可实现响应式组件样式。颜色系统默认使用 OKLCH,提供在浅色和深色模式下观感更均匀的调色板。

值得注意的新增包括:

  • @starting-style — 为 DOM 中出现和消失的元素提供原生进入/退出过渡。
  • 字段尺寸工具类 — 无需 JavaScript 即可自动调整表单输入大小。
  • 增强的渐变工具类 — 圆锥、径向和插值色标渐变。
  • 逻辑属性工具类 — ms-、me-、ps-、pe- 前缀用于国际化布局。

这些工具类体现了 Tailwind 将常见模式编码为可复用类而非强迫开发者为每个项目编写一次性 CSS 的理念。

与框架集成

Tailwind v4 通过简化设置与 React、Vue、Svelte 等框架无缝集成。在 Next.js 项目中,在全局 CSS 文件中导入一次 Tailwind,并从配置中移除 PostCSS 插件数组。Vite 项目可使用专用 Vite 插件直接接入 Oxide,完全绕过 PostCSS 以获得最大速度。

对于组件库,CSS 优先模型简化了分发。你导出带有预定义 @theme 令牌的 CSS 文件,而非需要消费者合并的 JavaScript 配置。消费者导入你的主题层即可立即继承设计系统,无配置冲突。

生产环境最佳实践

有效采用 v4 意味着拥抱其约定而非对抗。按语义组织主题令牌 — 使用 --color-surface-primary 而非 --color-gray-100,以便调色板变更时令牌仍有意义。利用级联层控制特异性,无需 !important 技巧。

牢记以下生产指南:

  • @theme 中定义语义颜色令牌,在组件中引用它们,而非原始十六进制值。
  • 使用 @layer 将自定义组件样式与工具类一并组织。
  • 启用内容检测 glob 以扫描所有模板文件,包括 monorepo 包中的文件。
  • 在 CI 中测量 CSS 输出大小,防止因内容路径过宽导致工具类膨胀。
  • 记录令牌命名约定,以便团队一致地扩展设计系统。

Tailwind CSS v4 不仅是增量更新 — 它是向尊重平台的 CSS 原生工具的根本转变。Oxide 引擎、@theme 配置和扩展的工具集使其成为大规模构建设计系统的团队迄今为止最强大的 Tailwind 版本。

喜欢这篇文章吗?

有项目或想法吗?我很乐意听你聊聊。

联系我