什么是 Tailwind CSS

01. 什么是 Tailwind CSS

1. 定义

Tailwind CSS 是一个原子化 CSS 框架(Utility-First CSS Framework)。

简单说:它提供了一堆可以直接写在 HTML 类名里的小工具类,让你不用写 CSS 代码,就能快速搭建界面。

html 复制代码
<!-- 传统 CSS 写法:需要写 CSS 文件 -->
<div class="card">...</div>

<style>
  .card {
    background-color: white;
    border-radius: 8px;
    padding: 16px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.1);
  }
</style>

<!-- Tailwind 写法:直接在 HTML 里写工具类 -->
<div class="bg-white rounded-lg p-4 shadow-sm">...</div>

2. 核心理念

传统 CSS 方式

css 复制代码
/* 定义语义化类名,然后写样式 */
.button-primary {
  background-color: blue;
  color: white;
  padding: 8px 16px;
  border-radius: 4px;
}

问题

  • 需要起名字(命名困难)
  • 样式和 HTML 分离(来回跳转)
  • 文件越来越大(难以维护)
  • 修改样式影响未知(全局污染)

Tailwind 方式

html 复制代码
<button class="bg-blue-500 text-white px-4 py-2 rounded">按钮</button>

优势

  • 不用起名字
  • 样式就在 HTML 里
  • 只改一个类名,不影响其他地方
  • 代码量更小

3. 工具类示例

分类 传统 CSS Tailwind
背景色 background-color: blue; bg-blue-500
文字颜色 color: white; text-white
内边距 padding: 16px; p-4
左右内边距 padding-left: 16px; padding-right: 16px; px-4
圆角 border-radius: 8px; rounded-lg
阴影 box-shadow: ... shadow-md
弹性布局 display: flex; flex
居中 justify-content: center; align-items: center; justify-center items-center

4. 与传统 CSS 对比

对比项 传统 CSS Tailwind CSS
学习曲线 低,但精通难 中等,需要记忆类名
开发速度 慢(要写 CSS) 快(直接写类名)
文件大小 随项目增长 固定(只生成用到的)
维护性 差(全局污染) 好(局部影响)
团队协作 类名冲突 无冲突
响应式 需要写媒体查询 内置断点前缀

5. 优点

1. 开发效率高

html 复制代码
<!-- 一行搞定一个卡片 -->
<div class="bg-white rounded-lg shadow-md p-6 hover:shadow-lg transition-shadow">
  <h2 class="text-xl font-bold mb-2">标题</h2>
  <p class="text-gray-600">描述文字</p>
</div>

2. 不用担心类名冲突

  • 没有 .card.container 这种通用类名
  • 每个类都是唯一的工具类

3. 无需切换文件

  • HTML 和样式在一起
  • 不用在 .html.css 之间来回跳

4. 只生成用到的样式

  • 生产环境会自动删除没用到的类
  • 最终 CSS 文件很小

5. 响应式设计简单

html 复制代码
<!-- 手机:1列,平板:2列,电脑:4列 -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4">
  ...
</div>

6. 暗色模式

html 复制代码
<!-- 暗色模式下背景变黑 -->
<div class="bg-white dark:bg-gray-900">
  ...
</div>

6. 缺点

1. HTML 看起来"臃肿"

html 复制代码
<!-- 类名确实比较多 -->
<div class="flex items-center justify-between p-4 bg-white rounded-lg shadow-md border border-gray-200 hover:shadow-lg transition-shadow">

解决方案 :可以使用 @apply 指令提取为组件类

2. 需要记忆类名

  • 初学者需要查文档
  • IDE 插件可以自动补全(推荐安装)

3. 团队学习成本

  • 团队所有人都要熟悉 Tailwind

7. 适用场景

✅ 适合使用

  • 新项目(从零开始)
  • 原型开发
  • 个人项目
  • 组件化框架项目(React、Vue、Svelte)
  • 需要快速迭代的项目

❌ 不太适合

  • 已有大量 CSS 的老项目(迁移成本高)
  • 复杂的动画效果(需要写自定义 CSS)
  • 团队不愿改变开发习惯

8. 谁在使用 Tailwind

  • GitHub(新版首页)
  • Vercel(官网)
  • Netlify(官网)
  • Laravel(框架)
  • Vue.js(新版文档)
  • Next.js(官方示例)

9. 总结

一句话总结
Tailwind 是在 HTML 里写 CSS,把样式拆成一个个小工具类,组合使用来构建界面

核心理念:原子化(Utility-First)

核心优势:不用命名、不用切文件、响应式简单、暗色模式简单、生产包小

核心劣势:HTML 看起来臃肿、需要记忆类名


10. 下一步

理解了 Tailwind 是什么之后,接下来学习如何安装和使用:

👉 下一节02. 快速开始


练习

尝试理解下面这段代码的效果:

html 复制代码
<div class="max-w-sm mx-auto bg-white rounded-xl shadow-md overflow-hidden md:max-w-2xl">
  <div class="md:flex">
    <div class="md:shrink-0">
      <img class="h-48 w-full object-cover md:h-full md:w-48" src="/image.jpg" alt="图片">
    </div>
    <div class="p-8">
      <div class="uppercase tracking-wide text-sm text-indigo-500 font-semibold">标签</div>
      <h2 class="mt-1 text-xl font-medium text-black">标题</h2>
      <p class="mt-2 text-gray-500">描述文字,这是一段示例内容。</p>
    </div>
  </div>
</div>

这段代码实现了一个响应式卡片:手机版竖排,电脑版横排。

相关推荐
程序员爱钓鱼7 分钟前
Rust impl详解:为Struct定义方法与关联函数
前端·后端·rust
用户0595401744617 分钟前
Qdrant 召回不一致踩坑实录:跑了 300 次测试才发现是索引没刷新
前端·css
Highcharts.js28 分钟前
Highcharts 主流前端框架无缝集成指南
前端·vue.js·前端框架·highcharts·可视化图表
JAVA面经实录91730 分钟前
网络编程基础(Java Web/分布式前置·完整版)(十一)
java·前端·网络
IT_陈寒32 分钟前
搞不定JavaScript的数组去重?你可能漏了这两个坑
前端·人工智能·后端
三84441 分钟前
CSRF跨站请求伪造基础
前端·csrf
岁岁种桃花儿1 小时前
Vue核心语法第十一篇:绑定样式
前端·javascript·vue.js
程序员黑豆9 小时前
Java类型推断完全指南:从var到菱形运算符,掌握使用限制与最佳实践
java·前端·ai编程
To_OC9 小时前
踩了个 TS 的坑之后,我终于把 type 和 interface 掰明白了
前端·react.js·typescript