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-brand、text-brandp-72、m-72等工具类
2️⃣ 工具类(Utility Classes)
是什么: Tailwind 的工具类是直接作用在元素上的单一功能类,通常只做“一件事”。
作用:
- 快速写样式,无需手写 CSS
- 每个工具类的名称直观地表达样式
- 由主题变量生成,所以能保持设计一致
例子:
<div class="bg-brand text-white p-6 rounded-lg shadow-md">
Hello Tailwind
</div>这些类分别表示:
bg-brand→ 背景色使用主题里的 brandtext-white→ 文本颜色白色p-6→ 内边距 1.5remrounded-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→ 聚焦时显示 ringmd: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: 对应 :hover,sm: 对应 @media (min-width: …) | Tailwind 变体是预先拼接在类名上的语法糖,不用写选择器,避免手写复杂的嵌套 |
评论
评论加载中……