Tailwind CSS v1.7.0

Adam Wathan

又一个新的 Tailwind 版本来了!这次带来了渐变支持、background-clip、对使用 @apply 与变体工具类的实验性支持,以及更多功能。让我们一起来看看!

新功能

渐变

这个版本最重要的更新 — Tailwind 现在内置支持背景渐变了!

渐变采用高度可组合的 API 设计,默认情况下可以在 8 个方向上指定最多三个颜色断点:

<div class="bg-gradient-to-r from-orange-400 via-red-500 to-pink-500">  <!-- ... --></div>

这是通过一个新的 backgroundImage 核心插件(你可以用它来处理任何背景图像!)和一个新的 gradientColorStops 核心插件实现的。

这些插件的默认配置如下:

tailwind.config.js
module.exports = {  theme: {    backgroundImage: {      "gradient-to-t": "linear-gradient(to top, var(--gradient-color-stops))",      "gradient-to-tr": "linear-gradient(to top right, var(--gradient-color-stops))",      "gradient-to-r": "linear-gradient(to right, var(--gradient-color-stops))",      "gradient-to-br": "linear-gradient(to bottom right, var(--gradient-color-stops))",      "gradient-to-b": "linear-gradient(to bottom, var(--gradient-color-stops))",      "gradient-to-bl": "linear-gradient(to bottom left, var(--gradient-color-stops))",      "gradient-to-l": "linear-gradient(to left, var(--gradient-color-stops))",      "gradient-to-tl": "linear-gradient(to top left, var(--gradient-color-stops))",    },    gradientColorStops: (theme) => theme("colors"),  },  variants: {    backgroundImage: ["responsive"],    gradientColorStops: ["responsive", "hover", "focus"],  },};

了解更多 原始拉取请求

新的 background-clip 工具类

我们还添加了一个新的 backgroundClip 核心插件,你可以用它来控制背景在元素内的渲染方式。

它包括 4 个新工具类:

CSS
bg-clip-borderbackground-clip: border-box
bg-clip-paddingbackground-clip: padding-box
bg-clip-contentbackground-clip: content-box
bg-clip-textbackground-clip: text

结合新的渐变功能,你可以用它来做一些很酷的渐变文本效果,比如这样:

<h1 class="text-6xl font-bold">  <span class="bg-gradient-to-r from-teal-400 to-blue-500 bg-clip-text text-transparent">    来自 Tailwind v1.7 的问候。  </span></h1>

默认情况下,仅为 backgroundClip 插件启用了响应式变体:

tailwind.config.js
module.exports = {  variants: {    backgroundClip: ["responsive"],  },};

新的 gap 工具类别名

由于某些愚蠢的原因,我将 column-gaprow-gap 工具类分别命名为 col-gap-{n}row-gap-{n},这并不是很糟糕,但它与 Tailwind 中其他事物的命名方式不一致。

我发现自己总是弄错它们的名字 — row-gap 是行中的间隙,还是行之间的间隙?

Tailwind v1.7 引入了新的 gap-x-{n}gap-y-{n} 工具类,它们的功能完全相同,但名字不那么糟糕。它们比实际的 CSS 名称更有意义,因为 flexbox 的间隙功能也开始推出了,而 flexbox 没有“列”。

这些工具类将在 v2.0 中取代旧的工具类,但目前它们会同时存在。

我们建议现在迁移到新名称,并使用此功能标志禁用旧名称:

tailwind.config.js
module.exports = {  future: {    removeDeprecatedGapUtilities: true,  },  // ...};

Tailwind 会在控制台中发出警告,提醒你在构建中包含了已弃用的类,直到你启用此标志。

新的 contents display 工具类

我们添加了一个新的 contents 类,用于最近的 display: contents CSS 功能。

<div class="flex">  <div><!-- ... --></div>  <!-- 这个容器将作为一个虚拟容器,其子元素将被视为父 flex 容器的一部分 -->  <div class="contents">    <div><!-- ... --></div>    <div><!-- ... --></div>  </div>  <div><!-- ... --></div></div>

Rachel Andrew 的这篇精彩文章 中了解更多。

每个字体大小的默认字间距

你现在可以在 tailwind.config.js 主题中为每个字体大小配置默认的字间距值,使用元组语法:

tailwind.config.js
module.exports = {  theme: {    fontSize: {      2xl: ['24px', {        letterSpacing: '-0.01em',      }],      // 或者也可以设置默认的行高      3xl: ['32px', {        letterSpacing: '-0.02em',        lineHeight: '40px',      }],    }  }}

这种新语法是对最近引入的更简单的 [{fontSize}, {lineHeight}] 语法的补充。

分割边框样式

我们为 divide 工具类添加了设置边框样式的工具类:

<div class="divide-y divide-dashed">  <div><!-- ... --></div>  <div><!-- ... --></div>  <div><!-- ... --></div>  <div><!-- ... --></div></div>

这些工具类默认包括 responsive 变体:

tailwind.config.js
module.exports = {  variants: {    divideStyle: ["responsive"],  },};

从插件访问整个配置对象

传递给插件 API 的 config 函数现在在不带参数调用时返回整个配置选项:

tailwind.plugin(function ({ config, addUtilities, /* ... */ })) {  // 返回整个配置对象  config()})

将颜色定义为闭包

你现在可以将颜色定义为回调函数,该函数接收一组参数,你可以使用这些参数生成颜色值。

这在尝试使自定义颜色与 backgroundOpacitytextOpacity 等工具类一起使用时特别有用

tailwind.config.js
module.exports = {  theme: {    colors: {      primary: ({ opacityVariable }) => `rgba(var(--color-primary), var(${variable}, 1))`,    },  },};

目前唯一传递的是一个 opacityVariable 属性,其中包含当前不透明度变量的名称(--background-opacity--text-opacity 等),具体取决于使用颜色的插件。

弃用

Tailwind v1.7 引入了一个新的功能标志和弃用系统,旨在使升级尽可能无痛。

每当我们弃用功能或引入新的(稳定的)重大更改时,它们将在 Tailwind v1.x 中的 tailwind.config.js 文件中的 future 属性下可用。

每当有弃用或重大更改可用时,Tailwind 会在每次构建时在控制台中警告你,直到你采用新更改并在配置文件中启用标志:

risk - 有即将到来的重大更改:removeDeprecatedGapUtilitiesrisk - 我们强烈建议现在选择这些更改,以简化将来升级 Tailwind。risk - https://tailwindcss.com/docs/upcoming-changes

你可以通过在 tailwind.config.js 文件中将该标志设置为 true 来选择重大更改:

tailwind.config.js
module.exports = {  future: {    removeDeprecatedGapUtilities: true,  },};

如果你不想选择加入但希望消除警告,请将标志显式设置为 false

tailwind.config.js
module.exports = {  future: {    removeDeprecatedGapUtilities: false,  },};

我们不推荐这样做,因为这会使升级到 Tailwind v2.0 更加困难。

弃用的 gap 工具类

如前所述,Tailwind v1.7.0 引入了新的 gap-x-{n}gap-y-{n} 工具类,以取代当前的 col-gap-{n}row-gap-{n} 工具类。

默认情况下,这两个类都会存在,但旧的工具类将在 Tailwind v2.0 中被移除。

要迁移到新类名,只需将现有的旧名替换为新名:

<div class="col-gap-4 row-gap-2 ..."><div class="gap-x-4 gap-y-2 ..."></div>

要立即选择新名称,请在 tailwind.config.js 文件中启用 removeDeprecatedGapUtilities 标志:

tailwind.config.js
module.exports = {  future: {    removeDeprecatedGapUtilities: true,  },};

实验性功能

Tailwind v1.7.0 引入了一个新的实验性功能系统,允许你选择即将推出但尚不稳定的 Tailwind 新功能。

需要注意的是,实验性功能可能会引入重大更改,不遵循 semver,并且随时可能更改

如果你喜欢冒险,可以像这样启用所有功能:

tailwind.config.js
module.exports = {  experimental: "all",};

说完这些,这里有一些我们正在努力的有趣内容,我们很高兴你终于可以玩了...

使用 @apply 与变体和其他复杂类

这是一个大更新 — 你终于可以使用 @apply 与响应式变体、伪类变体和其他复杂类了!

.btn {  @apply bg-indigo hover:bg-indigo-700 sm:text-lg;}

这个功能有很多细节需要了解,所以我建议 阅读拉取请求 了解它的工作原理。

这引入了 @apply 之前工作方式的重大更改,因此在切换之前请务必阅读所有细节。

要启用此功能,请使用 applyComplexClasses 标志:

tailwind.config.js
module.exports = {  experimental: {    applyComplexClasses: true,  },};

新的调色板

我们添加了一个新的 Tailwind 2.0 调色板预览版,你可以使用 uniformColorPalette 标志开始使用:

tailwind.config.js
module.exports = {  experimental: {    uniformColorPalette: true,  },};

新调色板的理念是每种颜色在每个色阶上都有相似的感知亮度。因此,你可以将 indigo-600 替换为 blue-600,并期望相同的颜色对比度。

我们确实预计这些颜色会随着我们不断迭代而继续变化,因此请自行承担风险使用这些颜色。

扩展的间距比例

我们添加了一个更大的间距比例,包括新的微小值如 0.51.52.53.5,以及新的大值如 728096并且 将基于百分比的分数值添加到整个间距比例(1/25/67/12 等)

你可以使用 extendedSpacingScale 标志启用扩展的间距比例:

tailwind.config.js
module.exports = {  experimental: {    extendedSpacingScale: true,  },};

这相当稳定,我会感到惊讶如果我们更改它。

默认行高

我们为每个内置字体大小添加了推荐的默认行高,可以使用 defaultLineHeights 标志启用:

tailwind.config.js
module.exports = {  experimental: {    defaultLineHeights: true,  },};

这是一个重大更改,将影响你的设计,因为之前所有字体大小的默认行高为 1.5

扩展的字体大小比例

我们添加了三个新的字体大小(7xl8xl9xl),以跟上最新的巨大标题文本趋势。它们还包括默认行高。

你可以在 extendedFontSizeScale 标志下启用它们:

tailwind.config.js
module.exports = {  experimental: {    extendedFontSizeScale: true,  },};

想讨论这篇文章吗?在 GitHub 上讨论 →

Get all of our updates directly to your inbox.
Sign up for our newsletter.