我的个人博客

关于 Tailwind CSS 任意值

Assorted reading books on table
Published on
/4 mins read/---

我从 2018 年开始使用 Tailwind CSS,我非常喜欢这个框架。 它非常灵活、强大,并且让编写 CSS 变得非常愉快。

以下是我在使用 Tailwind CSS 任意值为组件编写自定义样式时的一些最喜欢的技巧。 其中一些在官方文档中有介绍,有些我找不到(也许它们是隐藏的宝石 ),还有一些只是我自己的个人技巧。

NOTE

下面的所有示例都是用 React 编写的,因为我猜 Tailwind 主要是与前端框架一起使用的。

任意值

任意值是指在 Tailwind CSS 配置中未预定义的值。 我们使用方括号注释 [] 来动态生成带有任何值的类:

<div className="bg-[#f00]" />

这将输出以下 CSS:

.bg-\[\#f00\] {
  --tw-bg-opacity: 1;
  background-color: rgb(255 0 0 / var(--tw-bg-opacity)) /* #ff0000 */;
}

引用设计令牌

我们可以使用 theme() 函数引用 tailwind.config.js 中的设计令牌:

<div className="[--song-color:theme(colors.gray.200)]" />

输出 CSS:

.\[--song-color\:theme\(colors\.gray\.200\)\] {
  --song-color: #e5e7eb;
}

使用 CSS 变量

我们还可以使用 CSS 变量生成任意值:

<div className="h-[var(--section-height)]" />

你可以去掉 var(...) 包装器,只提供变量名就足够了:

<div className="h-[--section-height]" />

这将输出以下 CSS:

.h-\[var\(--section-height\)\] {
  height: var(--section-height);
}

但对于具有回退值到另一个变量的变量,我们仍然需要使用 var(...) 包装器:

<div className="h-[var(--section-height,var(--fallback-height))]" />

输出 CSS:

.h-\[var\(--section-height\,var\(--fallback-height\)\)\] {
  height: var(--section-height, var(--fallback-height));
}

注入 CSS 变量

CSS 变量可以通过内联样式注入到 DOM 中,如下所示:

<div style={{ '--song-color': '#f00' }} />

但使用任意值,我们可以这样做:

<div className="[--song-color:#f00]" />

这将输出与上面相同的 CSS 变量声明。

开箱即用的工具

对于 Tailwind CSS 默认不支持的属性,我们也可以使用方括号符号来编写完全任意的 CSS:

<div className='[background-image:url("/static/images/black-grit.png")]' />

处理空格

我们必须从任意类中删除空格以使其工作,或者使用下划线符号 _ 以获得更好的可读性:

<div className="shadow-[6px_6px_12px_-1px_rgba(0,_0,_0,_0.1)]" />

解决命名空间冲突

许多 CSS 属性在 Tailwind CSS 中共享相同的命名空间,例如 bg-red-500bg-cover,或 text-gray-900text-2xl

为了避免使用任意值时的冲突,我们可以在属性值前加上 CSS 数据类型color:length: 等)前缀:

<div className="bg-[length:100%_50%]" />

这在与变量一起使用时非常有用,例如:

<div className="bg-[color:--variable]" />
// 或者只是 `bg-[--variable]`

将输出背景颜色的 CSS:

.bg-\[--variable\] {
  background-color: var(--variable);
}

而添加 length: 前缀将输出 background-size 的 CSS:

<div className="bg-[length:--variable]" />

输出:

.bg-\[length\:--variable\] {
  background-size: var(--variable);
}

这些是我在使用 Tailwind CSS 任意值时的一些最喜欢的笔记。 你有其他技巧吗?请在评论区告诉我

愉快地样式化(使用 Tailwind CSS)