Tailwind CSS v2.0

Adam Wathan

大约在 18 个月前,我们发布了 Tailwind CSS v1.0,这标志着我们致力于保持稳定,同时在每个小版本发布中继续推进令人兴奋的新功能。

今天,我们终于发布了 Tailwind CSS v2.0。

Tailwind CSS v2.0 是有史以来的第一个主要更新,包括

...以及 一堆其他小东西

即使 Tailwind CSS v2.0 是一个新的主要版本,我们仍然非常努力地最大限度地减少了重大的破坏性更改,尤其是那些会迫使您编辑大量模板的更改。我们重命名了两个类,删除了三个在现代浏览器中不再相关的类,并用更强大的替代方案替换了两个。任何其他可能影响您的破坏性更改都可以通过在您的 tailwind.config.js 文件中添加几个小的内容来补救。升级应该不会超过 30 分钟。

查看升级指南,了解有关将您的项目迁移到 Tailwind CSS v2.0 的更多详细信息和分步说明。

如果您想使用 v2.0 启动一个全新的项目,请访问我们更新的安装文档以快速开始。

还有,新的全新网站怎么样?真棒。


全新的调色板

自从我们第一次尝试在 Tailwind CSS v0.1.0 时代设计通用调色板以来,我们对颜色有了很多了解,v2.0 代表了我们迄今为止的最佳尝试。

新的调色板包含 22 种颜色(之前为 10 种),每种颜色有 10 种色调(而不是 9 种),总共有 220 个值。

New Tailwind CSS color palette

我们为每种颜色添加了额外的浅色 50 色调,因此它们现在从 50-900

<div class="bg-gray-50">I can't believe it's not white.</div>

调色板甚至现在包括 5 种不同的灰色阴影,因此如果您想要真正酷的东西,可以选择“蓝灰色”,或者选择“暖灰色”以获得更多棕色的东西。

New Tailwind CSS alternate gray

我们为您配置了一个均衡的 8 色调色板,但完整的调色板位于一个新的 tailwindcss/colors 模块中,您可以将其导入到您的配置文件顶部,以根据您的喜好策划您自己的自定义调色板

const colors = require("tailwindcss/colors");
module.exports = {
theme: {
colors: {
gray: colors.trueGray,
indigo: colors.indigo,
red: colors.rose,
yellow: colors.amber,
},
},
};

在新自定义颜色文档中了解更多信息。


暗黑模式

自从 iOS 添加了原生暗黑模式以来,你们这些暗黑模式爱好者一直没能让我清静下来,让我将其添加到 Tailwind 中。好吧,你们做到了,它来了,你们赢了。

打开您的 tailwind.config.js 文件并将 darkMode 翻转为 media

module.exports = {
darkMode: "media",
// ...
};

搞定 — 现在只需在类名的开头添加 dark:,例如 bg-black,它只会在启用暗黑模式时生效

<div class="bg-white dark:bg-black">
<h1 class="text-gray-900 dark:text-white">Dark mode</h1>
<p class="text-gray-500 dark:text-gray-300">The feature you've all been waiting for.</p>
</div>

也适用于悬停和其他效果

<button class="bg-gray-900 hover:bg-gray-800 dark:bg-white dark:hover:bg-gray-50">
<!-- ... -->
</button>

以及响应式效果

<div class="lg:bg-white lg:dark:bg-black ...">
<!-- ... -->
</div>

以及响应式悬停效果

<button class="lg:dark:bg-white lg:dark:hover:bg-gray-50 ...">
<!-- ... -->
</button>

查看暗黑模式文档以了解所有详细信息。


超宽 2XL 断点

我非常确定他们现在生产了一款 1280px 宽的 iPhone,所以是时候升级了。

我们开箱即用地添加了一个新的 2xl 断点,让您可以针对 1536px 及以上的设备

<h1 class="2xl:text-9xl ...">Godzilla</h1>

我知道这很令人兴奋,但说真的,您自己已经可以添加这个功能了大约三年了。不过现在它被官方认可了,我明白了。


新的轮廓环形实用工具

您知道 outline 属性如何忽略边框半径并且几乎总是看起来很糟糕吗?ring 实用工具是我们尝试通过鲜血、汗水和眼泪来创造更好解决方案的尝试。

它们的工作方式很像 border 实用工具,不同之处在于它们添加的是实心 box-shadow 而不是边框,因此它们不会影响布局

<button class="focus:ring-opacity-50 focus:ring-2 focus:ring-blue-300 focus:outline-none ...">
<!-- ... -->
</button>

您甚至可以使用 ring-offset-{width} 实用工具来偏移它们,以创建一种光环效果

<button class="focus:ring-opacity-50 focus:ring-2 focus:ring-blue-300 focus:ring-offset-2 focus:outline-none ...">
<!-- ... -->
</button>

使用大量的 CSS 自定义属性 voodoo,我们甚至使它们自动与常规 box-shadows 结合使用

<button class="shadow-sm focus:ring-2 ...">
<!-- Both the shadow and ring will render together -->
</button>

环形宽度文档是学习这些新 API 的最佳起点。它们真的非常酷,比您可能认为的更有用。


实用工具友好的表单样式

令我一直感到惊讶的一件事是,很少有人抱怨表单元素在 Tailwind 中开箱即用时是多么的无用。它们看起来简直糟透了,如果不编写充满奇怪的 background-image SVG 技巧的自定义 CSS 并担心需要您从未听说过的 CSS 属性(如 color-adjust)的晦涩边缘情况,您就无能为力。

我之前尝试使用 @tailwindcss/custom-forms 插件来解决这个问题,但是添加一堆类似 form-inputform-checkbox 的类名感觉不太对劲,所以我们并没有真正推广它,甚至没有从 Tailwind 文档中链接到它。不过这一次,我想我们已经弄清楚了。

与 Tailwind CSS v2.0 一起,我们发布了一个全新的官方插件,名为 @tailwindcss/forms,它标准化并重置了所有浏览器中的基本表单控件,使其处于一个超级容易使用纯实用工具类进行样式的状态

<!-- This will be a nice rounded checkbox with an indigo focus ring and an indigo checked state -->
<input
type="checkbox"
class="focus:ring-opacity-50 h-4 w-4 rounded border-gray-300 text-indigo-500 focus:border-indigo-300 focus:ring-2 focus:ring-indigo-200"
/>

它没有开箱即用,但您可以使用一行代码将其添加到您的 tailwind.config.js 文件中

module.exports = {
// ...
plugins: [require("@tailwindcss/forms")],
};

查看@tailwindcss/forms 文档以获取更多信息。


每个字体大小的默认行高

Tailwind 中的每个字体大小实用工具现在都配有一个合理的默认行高

// Tailwind's default theme
module.exports = {
theme: {
// ...
fontSize: {
xs: ["0.75rem", { lineHeight: "1rem" }],
sm: ["0.875rem", { lineHeight: "1.25rem" }],
base: ["1rem", { lineHeight: "1.5rem" }],
lg: ["1.125rem", { lineHeight: "1.75rem" }],
xl: ["1.25rem", { lineHeight: "1.75rem" }],
"2xl": ["1.5rem", { lineHeight: "2rem" }],
"3xl": ["1.875rem", { lineHeight: "2.25rem" }],
"4xl": ["2.25rem", { lineHeight: "2.5rem" }],
"5xl": ["3rem", { lineHeight: "1" }],
"6xl": ["3.75rem", { lineHeight: "1" }],
"7xl": ["4.5rem", { lineHeight: "1" }],
"8xl": ["6rem", { lineHeight: "1" }],
"9xl": ["8rem", { lineHeight: "1" }],
},
},
};

因此,现在当您添加像 text-xl 这样的实用工具时,相应的默认行高(在本例中为 1.75rem)会自动添加

<p class="text-xl">This will have a line-height of 1.75rem automatically.</p>

如果您想覆盖它,您仍然可以通过叠加 leading 实用工具来做到这一点

<p class="text-3xl leading-normal">Come on don't do this to me.</p>

查看字体大小文档以获取更多详细信息。


扩展的间距、排版和不透明度比例

我们扩展了默认间距比例,以包括一堆微小的值,例如 0.51.52.53.5

<span class="ml-0.5">Just a little nudge.</span>

...以及顶部的一些新值,例如 728096

<div class="p-96">This is too much padding.</div>

我们还扩展了 inset(对于您这些老古董来说是 top/right/bottom/left)和 translate 插件,以包括完整的间距比例,所以现在您可以执行以下操作

<div class="top-8">
<!-- .... -->
</div>

我们使用新的 7xl8xl9xl 值扩展了默认排版比例

<h1 class="text-9xl font-bold">What is this, an Apple website?</h1>

我们还使用 10 的步长扩展了默认不透明度比例,以及 5 和 95 的值

<figure class="opacity-5">
<blockquote>You can't see me.</blockquote>
<figcaption>John Cena</figcaption>
</figure>

浏览整个 默认配置文件,以查看确切的可用内容。


将 @apply 与任何东西一起使用

多年来,我收到的最常见的问题是“为什么 @apply hover:bg-black 不起作用?”

这是一个合理的问题,它~~不~~起作用是很愚蠢的。

这花费了一些严肃的工程力量,但我们弄清楚了 — 现在您可以 @apply 字面上的任何东西

.btn {
@apply focus:ring-opacity-50 bg-indigo-500 hover:bg-indigo-600 focus:ring-2 focus:ring-indigo-200;
}

查看更新的 @apply 文档以了解更多信息。


新的文本溢出实用工具

在 v2.0 之前,如果您想控制溢出的文本,我们真正给您的只是相当笨拙的 truncate 实用工具。

现在我们添加了专用的 overflow-ellipsisoverflow-clip 实用工具来控制 text-overflow 属性,以防您想在不将文本限制为一行的情况下为溢出的文本添加省略号。

<p class="overflow-hidden overflow-ellipsis">Look ma no whitespace-nowrap ipsum...</p>

查看新的文本溢出文档以查看它的实际效果。


扩展变体

您知道什么很糟糕吗?想要为 backgroundColor 启用 focus-visible,但必须列出每个默认变体才能添加一个额外的变体

module.exports = {
// ...
variants: {
backgroundColor: ["responsive", "hover", "focus", "focus-visible"],
},
};

您知道什么更好吗?只需添加您想要启用的那一个

module.exports = {
// ...
variants: {
extend: {
backgroundColor: ["focus-visible"],
},
},
};

出发吧.


默认启用 Group-hover 和 focus-within

我们在开发 Tailwind UI 时学到的一件事是,group-hoverfocus-within 不是锦上添花,而是必不可少的。

任何我们之前默认启用悬停或焦点的地方,现在默认也启用了 group-hoverfocus-within

<div class="group ...">
<span class="group-hover:text-blue-600 ...">Da ba dee da ba daa</span>
</div>

查看默认变体参考以获取 v2.0 中在何处启用了哪些功能的完整列表。


默认过渡持续时间和缓动曲线

到目前为止,任何时候您想在 Tailwind 中添加过渡效果,您通常需要添加三个类

<button class="transition duration-150 ease-in-out ...">Count them</button>

在 v2.0 中,我们使您可以指定一个默认的持续时间和时间函数,该函数在任何时候添加任何 transitionProperty 实用工具时都会自动使用

module.exports = {
// ...
theme: {
// ...
transitionDuration: {
DEFAULT: "150ms",
// ...
},
transitionTimingFunction: {
DEFAULT: "cubic-bezier(0.4, 0, 0.2, 1)",
// ...
},
},
};

因此,如果您有一个常用的持续时间和时间函数,您可以非常频繁地使用它,那么现在您只需要编写一个类

<button class="transition ...">Count them again</button>

当然,您可以通过叠加单独的持续时间或时间函数实用工具来覆盖它

<button class="transition duration-300 ease-out ...">We're back baby</button>

过渡属性文档中了解有关过渡的更多信息。


与 IE11 不兼容

我们已决定不再为 IE11 操心,这使我们能够完全拥抱 CSS 自定义属性,用于各种疯狂的东西,这也是使像新的 ring 实用工具这样的东西成为可能的原因。

放弃 IE11 支持意味着即使在使用 PurgeCSS 时,构建也更小,因为我们不必运送任何 CSS 变量回退,这比您预期的要多。

感谢 Bootstrap 有勇气首先这样做 — 我认为如果他们没有决定铺平道路,我们就不会如此大胆。

好消息是,如果您需要支持 IE11,您可以始终使用 Tailwind CSS v1.9,它仍然是一个非常高效的框架。


各位,这就是 Tailwind CSS v2.0 的(相当大的) 简述!

还在等什么?去构建一些令人惊叹的东西

直接将我们的所有更新发送到您的收件箱。
注册我们的新闻通讯。

版权所有 © 2025 Tailwind Labs Inc.·商标政策