Tailwind-主题变量变体工具类

Tailwind CSS 的 主题变量(theme variables)、变体(variants) 和 工具类…

Tailwind CSS 的 主题变量(theme variables)变体(variants)工具类(utility classes) 是它的三大核心概念,它们相互配合让你能够快速、可定制地写样式。下面我帮你梳理一下它们的关系和区别

1️⃣ 主题变量(Theme Variables)

是什么: 主题变量是 Tailwind 配置文件(tailwind.config.js)里定义的设计系统值,比如颜色、间距、字体大小、阴影、断点等。

作用:

  • 定义可复用的设计“Token”,确保设计一致性
  • 生成对应的工具类(utility classes)
  • 可以扩展或覆盖默认主题

例子:

js
// tailwind.config.js
module.exports = {
  theme: {
    extend: {
      colors: {
        brand: '#1E40AF',
      },
      spacing: {
        72: '18rem',
      }
    }
  }
}

这样会生成:

  • bg-brandtext-brand
  • p-72m-72 等工具类

2️⃣ 工具类(Utility Classes)

是什么: Tailwind 的工具类是直接作用在元素上的单一功能类,通常只做“一件事”。

作用:

  • 快速写样式,无需手写 CSS
  • 每个工具类的名称直观地表达样式
  • 由主题变量生成,所以能保持设计一致

例子:

<div class="bg-brand text-white p-6 rounded-lg shadow-md">
  Hello Tailwind
</div>

这些类分别表示:

  • bg-brand → 背景色使用主题里的 brand
  • text-white → 文本颜色白色
  • p-6 → 内边距 1.5rem
  • rounded-lg → 边角圆润
  • shadow-md → 中等阴影

3️⃣ 变体(Variants)

是什么: 变体是工具类的前缀,用来描述某种状态、伪类或媒体查询下的样式。

作用:

  • 让工具类在不同状态下生效
  • 避免手写复杂的选择器

常见变体:

  • 状态:hover:, focus:, active:, disabled:
  • 响应式:sm:, md:, lg:, xl:
  • 其他:dark:, group-hover:, first:, last:, odd:, even:

例子:

<button class="bg-brand hover:bg-brand/80 focus:ring-2 md:p-6">
  Button
</button>

含义:

  • hover:bg-brand/80 → 鼠标悬停时背景色变浅
  • focus:ring-2 → 聚焦时显示 ring
  • md:p-6 → 在中屏及以上设备才有 1.5rem 内边距

关系总结(一句话)

  • 主题变量(Theme):定义设计系统的值(颜色、间距、字体等)
  • 工具类(Utility Classes):用主题变量生成的“原子类”,直接写在 HTML 里
  • 变体(Variants):工具类的“状态修饰符”,控制工具类在特定条件下生效

变体就是有筛选功能的,类似于CSS选择器

Tailwind 概念你类比的东西相似点 ✅不同点 ⚠️
主题变量 (Theme)CSS 变量--var都是集中管理设计值(颜色、间距、字体大小…),保证一致性Tailwind 的 theme 是编译时生成类的“数据源”,不是运行时的 CSS 变量(除非你自己扩展支持 CSS 变量)
工具类 (Utility Class)CSS 代码块(具体样式规则)都定义一小段样式,比如 p-4 { padding: 1rem; }工具类是自动生成的、粒度非常细(一个类只干一件事),比普通 BEM 或自写 CSS 更原子化
变体 (Variant)CSS 选择器 / 媒体查询都控制样式生效的条件,比如 hover: 对应 :hoversm: 对应 @media (min-width: …)Tailwind 变体是预先拼接在类名上的语法糖,不用写选择器,避免手写复杂的嵌套

评论

评论加载中……