Tailwind CSS 是一款功能强大的、低层级的 CSS 框架,可以帮助你快速开发出高质量的用户界面。设计理念与传统的 UI 框架不同,它提供了一系列的类,允许开发者直接在 HTML 中构建和设计页面,而不需要编写自定义的 CSS 代码。使用 Tailwind CSS 你不必再为 class 命名烦恼,只需要专注于页面的设计。
2025/01/22 Tailwind 官方正式发布了 v4.0 版本。
官方文档 已经针对 v4.0 进行了更新,并且给出了从 v3.0 升级到 v4.0 的 指南 。同时官方也提供了 升级工具 来帮助你快速完成升级。
以下内容基于 官方 v4.0 博客 翻译摘录,如有不准确之处,欢迎指正。
Tailwind CSS 4.0 借助新的 Oxide 引擎,大幅提高了构建速度,并减小了占用空间。增量构建速度提高了 8 倍以上,完全重建也提高了 3.5 倍以上。
以下是构建速度的对比:
v3.0 | v4.0 | 提升 | |
---|---|---|---|
完全构建 | 378ms | 100ms | 3.78x |
新增 CSS 进行增量构建 | 44ms | 5ms | 8.8x |
没有新增 CSS 进行增量构建 | 35ms | 192µs | 182x |
@layer theme, base, components, utilities;
@property
来定义内部自定义属性,从而可以实现例如过渡背景渐变等操作,并提高页面性能。 @property --tw-gradient-from {
syntax: "<color>";
inherits: false;
initial-value: #0000;
}
color-mix()
修改不透明度比以往更加容易。 @min-*
和 @max-*
来支持容器查询。 在 v4.0 中,可以通过组合不同的选择器变体来快速创建新的样式。例如 group-*
, peer-*
, has-*
, not-*
, focus
等。
<div class="group">
<!-- <div class="group-has-[&:focus]:opacity-100"> -->
<div class="group-has-focus:opacity-100">
<!-- ... -->
</div>
</div>
</div>
这意味着你可以更加自由灵活的配置你的样式,理论上来说这种组合没有任何限制,如果有需要甚至可以写出 group-not-has-peer-not-data-active:underline
的组合。
这是 Tailwind CSS 4.0 最重要的更新之一,这意味着:
@import "tailwindcss";
来替换 @tailwind base;
引入样式。 @theme
在 CSS 中更改主题。 tailwind.config.js
文件来进行配置 @import "tailwindcss";
@theme {
--font-family-display: "Satoshi", "sans-serif";
--breakpoint-3xl: 1920px;
--color-neon-pink: oklch(71.7% 0.25 360);
--color-neon-lime: oklch(91.5% 0.258 129);
--color-neon-cyan: oklch(91.3% 0.139 195.8);
}
/* ... */
更多内容可以参考 TailWind CSS 主题变量 文档
Tailwind CSS 4.0 简化了许多样式的工作方式,这意味着大部分样式可以接受任意值而不需要添加额外的配置。例如 opacity-75
, w-17
, pr-29
。从 3.0 版本升级过来的你应该知道这优化的好处。
这是个重大更新之一,它将颜色从 RGB 转换为 Oklch 色彩空间,这是一个更加自然的颜色模型,可以更好地描述颜色的变化。但是同时也会带来浏览器 兼容性 问题,所以需要特别注意。
TailWind CSS 4.0 删除了一些过时的功能并提供了替换方案:
已删除 | 替代方案 |
---|---|
不透明度的修改方式,如 bg-opacity-* , text-opacity-* 等 | 使用不透明度修改器,如 bg-black/50 |
flex-shrink-* | shrink-* |
flex-grow-* | grow-* |
overflow-ellipsis | text-ellipsis |
decoration-slice | box-decoration-slice |
decoration-clone | box-decoration-clone |
Tailwind CSS 4.0 新增了例如: rotate-x-*
, rotate-y-*
, scale-z-*
, translate-z-*
等 APIs
bg-linear-*
为线性渐变添加角度。 srgb
修饰符。如:bg-linear-to-r/srgb
。 bg-conic-*
)和径向渐变(bg-radial-*
),可以与 from-*
、via-*
、to-*
结合使用。
<div class="size-24 rounded-full bg-conic/[in_hsl_longer_hue] from-red-600 to-red-600"></div>
<div class="size-24 rounded-full bg-radial-[at_25%_25%] from-white to-zinc-900 to-75%"></div>
not-*
对应 CSS :not()
。 inset-shadow-*
和 inset-ring-*
对阴影进行调整。 field-sizing-*
自动调整文本区域的大小。 color-scheme-*
帮助指定页面的 颜色模式。 font-stretch-*
控制字体的横向拉伸程度。 inert:
用于设置标有 inert
属性的非交互式元素样式。 in-*
与 group-*
类似,都是用于响应父级元素变化时设置元素样式,不同点是 in
不需要指定父级元素,这意味着它会响应任何父级,如果需要精细粒度的控制还是推荐使用 group
。 open:
对拥有 open 属性的元素进行样式调整,例如 <details>
、<dialog>
。 **:
可用于选择所有子元素。 在 v3.0 中, Tailwind CSS 使用 gray-200
作为默认边框颜色,在 v4.0 中改为使用 currentColor
作为默认值。(或许你需要通过指定 border-gray-200
和 divide-gray-200
来保持之前的样式)
ring
的默认宽度从 3px 更改为 1px,默认颜色从 blue-500
更改为 currentColor
。
<!-- old: <button class="focus:ring ..."> -->
<button class="focus:ring-3 focus:ring-blue-500...">
<!-- ... -->
</button>
或者修改全局默认样式:
@theme {
--default-ring-width: 3px;
--default-ring-color: var(--color-blue-500);
}
从 gray-400
改为 50% 不透明度的当前文本颜色。
对于 button 元素,默认光标现在使用的是 default
,而不是 pointer
。
不再劫持 @layer utilities
规则来实现自定义类,可以通过 @utility
实现。
/* @layer utilities {
.tab-4 {
tab-size: 4;
}
} */
@utility tab-4 {
tab-size: 4;
}
在 3.0 中可以使用 bg-[--brand-color]
而不通过 var()
,但这可能会导致歧义。所以 4.0 改为小括号使用变量 bg-(--brand-color)
。