2026年6月21日 01:58

Tailwind CSS 是什么?它和传统 CSS 框架有什么区别?

如果你第一次看到 Tailwind CSS 写出来的 HTML,大概率会愣一下:一个按钮上怎么塞了这么多 class?

html
<button class="rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white hover:bg-blue-700">保存</button>

这就是 Tailwind CSS 的核心思路:不先写一个 .btn-primary,而是直接用一组小颗粒度的工具类把样式拼出来。它不是 Bootstrap 那种“拿来就有按钮、卡片、导航栏”的组件框架,而是一套 utility-first CSS 工具箱。

Tailwind CSS 是什么?

Tailwind CSS 是一个实用优先(utility-first)的 CSS 框架。它提供大量原子化 class,比如 p-4flextext-smbg-blue-600rounded-lg,每个 class 通常只负责一件很小的事。

传统写法通常是这样:

css
.card-title { font-size: 20px; font-weight: 700; margin-bottom: 12px; }

Tailwind 写法更像这样:

html
<h2 class="mb-3 text-xl font-bold">标题</h2>

你不需要先想 .card-title.main-title.title-large 哪个名字更合适,直接把字号、间距、字重写在元素上。

utility-first 到底是什么意思?

utility-first 不是“不要 CSS”,而是优先使用工具类完成大多数样式。一个卡片可以这样写:

html
<div class="rounded-xl border border-gray-200 bg-white p-6 shadow-sm"> <h3 class="text-lg font-semibold text-gray-900">Tailwind CSS</h3> <p class="mt-2 text-sm leading-6 text-gray-600">用工具类组合界面,而不是套用预制组件。</p> </div>

每个 class 都很直白,看到 mt-4 就知道是上边距,看到 text-gray-600 就知道是灰色文字,不用再去找某个 class 背后到底写了什么 CSS。

Tailwind CSS 是怎么工作的?

Tailwind 会扫描你的 HTML、JS、TS、Vue、React 组件等文件,找到实际用到的 class,然后生成对应 CSS。Tailwind v3 默认使用 JIT;Tailwind v4 则换成新的编译引擎,安装和配置更轻。

v4 配合 Vite 可以这样安装:

bash
npm install tailwindcss @tailwindcss/vite
ts
import { defineConfig } from 'vite' import tailwindcss from '@tailwindcss/vite' export default defineConfig({ plugins: [tailwindcss()] })

主 CSS 中引入:

css
@import "tailwindcss";

v3 的经典方式则是 npx tailwindcss init,配置 content,再在 CSS 里写 @tailwind base; @tailwind components; @tailwind utilities;

常用 Tailwind 类名有哪些?

间距:m-4p-6mt-8gap-4。颜色:bg-blue-600text-whitetext-gray-700。布局:flexitems-centerjustify-betweengridgrid-cols-3。尺寸和边框:w-fullmax-w-3xlrounded-lgbordershadow-md

响应式写法是在类名前加断点前缀:

html
<div class="w-full md:w-1/2 lg:w-1/3"></div>

状态样式也用前缀:

html
<button class="bg-blue-600 hover:bg-blue-700 focus:ring-2 active:bg-blue-800">提交</button>

深色模式常见写法是 dark:

html
<div class="bg-white text-gray-900 dark:bg-gray-900 dark:text-gray-100">内容</div>

Tailwind CSS 和 Bootstrap 有什么区别?

对比项Tailwind CSSBootstrap / 传统 CSS 框架
核心思路提供工具类,自己组合界面提供预制组件和样式规范
按钮、卡片、导航默认不提供完整组件默认提供现成组件
设计自由度高,不容易撞脸中,默认样式辨识度强
上手速度需要熟悉类名体系复制组件即可用
定制成本适合做自有设计系统深度改样式时容易覆盖 CSS
适合项目产品后台、SaaS、设计定制强的前端项目快速原型、内部工具、样式要求不高的页面

如果想快速搭一个“能用就行”的后台页面,Bootstrap 很省事。如果有自己的视觉规范,或者不想让页面长得像默认模板,Tailwind 更灵活。

Tailwind 什么时候值得用?

Tailwind 适合组件化框架项目、定制视觉强的产品、页面迭代快的团队,以及想用一套设计令牌约束颜色、字体、圆角、间距的项目。

它不太适合只写一两个静态页面、团队完全不熟悉工具类写法、已有成熟 CSS 体系且迁移收益不明显的项目。Tailwind 本身不是组件库,如果需要完整组件,可以搭配 Headless UI、Radix UI、shadcn/ui 等方案。

Tailwind 的缺点和最佳实践

Tailwind 最大的争议是 class 太长。解决办法是把重复 UI 抽成组件,而不是到处复制同一串 class。@apply 可以少量使用,但如果大量用它把工具类提取回 CSS,最后会变成“用 Tailwind 重新写了一套传统 CSS”。

还要避免过度动态拼接 class:

js
const className = `text-${color}-600`

Tailwind 的扫描依赖可识别的类名,更稳的方式是把可能值列出来:

js
const colorMap = { success: 'text-green-600', danger: 'text-red-600' }

Tailwind CSS 的价值,是用一套统一的工具类和设计 token 快速搭界面。它和 Bootstrap 最大的区别是:Bootstrap 偏“拿组件来用”,Tailwind 偏“拿工具类来搭”。如果团队能接受 class 较长的写法,并愿意把重复 UI 抽成组件,Tailwind 会让日常改样式变得很快。

标签:Tailwind CSS