Tailwind CSS 常用用法速查
前言
Tailwind CSS 是一个实用优先的 CSS 框架。
它不提供预定义组件,而是提供大量原子化工具类,让你直接在 HTML 中组合出任意样式。
相比手写 CSS,这种方式省去了起类名、切换文件、处理样式冲突的烦恼,开发效率很高。
本文梳理日常开发中最常用到的 Tailwind 用法,涵盖布局、间距、排版、颜色、响应式、伪类和自定义配置,适合快速查阅。
安装
以 Vite + React 项目为例,安装 Tailwind v4 只需一条命令:
1 | npm install tailwindcss @tailwindcss/vite |
然后在 vite.config.ts 中注册插件:
1 | import { defineConfig } from "vite"; |
在 CSS 入口文件中引入 Tailwind:
1 | @import "tailwindcss"; |
配置完成后,所有工具类即可在项目中直接使用。
尺寸
宽度和高度使用 w-* 和 h-*,支持固定值和百分比。
1 | <!-- 固定宽度 --> |
w-screen 和 h-screen 对应视口宽高,w-fit 和 w-min、w-max 分别对应内容尺寸和最大内容尺寸。
| Class | Properties |
|---|---|
| w-0 | width: 0px; |
| w-px | width: 1px; |
| w-0.5 | width: 0.125rem; /_ 2px _/ |
| w-1 | width: 0.25rem; /_ 4px _/ |
| w-1.5 | width: 0.375rem; /_ 6px _/ |
| w-2 | width: 0.5rem; /_ 8px _/ |
| w-auto | width: auto; |
| w-1/2 | width: 50%; |
| w-1/3 | width: 33.333333%; |
| w-1/4 | width: 25%; |
| w-1/6 | width: 16.666667%; |
| w-1/12 | width: 8.333333%; |
| w-full | width: 100%; |
| w-screen | width: 100vw; |
| w-svw | width: 100svw; |
| w-lvw | width: 100lvw; |
| w-dvw | width: 100dvw; |
| w-min | width: min-content; |
| w-max | width: max-content; |
| w-fit | width: fit-content; |
布局
Tailwind 提供了完整的 Flexbox 和 Grid 工具类,足以覆盖绝大多数布局场景。
Flex 布局
使用 flex 开启弹性布局,配合 items-* 和 justify-* 控制对齐方式:
1 | <!-- 水平居中 + 垂直居中 --> |
flex-col 可将主轴切换为纵向,gap-4 统一控制子元素间距。
Flex 子项
容器上的工具类控制整体布局,子项上的工具类控制每个元素的伸缩与对齐。
flex-1 让子项等分剩余空间,flex-none 让子项固定不动:
1 | <div class="flex"> |
basis-* 设置子项的初始尺寸,适合按比例分配:
1 | <div class="flex"> |
flex-grow 允许拉伸,flex-shrink-0 禁止压缩:
1 | <div class="flex"> |
order-* 控制排列顺序,-order-first 移到最前,order-last 移到最后:
1 | <div class="flex"> |
self-* 单独覆盖某个子项的对齐方式:
1 | <div class="flex items-start"> |
常用子项类名速查:flex-1(等分空间)、flex-auto(按内容分配)、flex-none(固定不动)、flex-grow(允许拉伸)、flex-grow-0(禁止拉伸)、flex-shrink-0(禁止压缩)、basis-full(独占一行)、self-start/center/end/stretch(单独覆盖对齐)。
Grid 布局
使用 grid 开启网格布局,grid-cols-* 定义列数:
1 | <!-- 三列等宽 --> |
也可以用 grid-cols-[200px_1fr] 这种方括号写法自定义列宽,适合侧边栏 + 内容区的经典布局。
1 | <div class="grid grid-cols-3 gap-x-4 gap-y-3"> |
间距
Tailwind 用 p-* 和 m-* 设置内边距和外边距,数值对应 0.25rem 的倍数。
Padding(内边距)
p-* 设置四个方向的内边距,也可以按方向单独设置:
| 前缀 | 作用方向 |
|---|---|
| p | 四个方向 |
| px | 左右 |
| py | 上下 |
| pt | 上 |
| pr | 右 |
| pb | 下 |
| pl | 左 |
常用数值速查:
| Class | Properties |
|---|---|
| p-0 | padding: 0px; |
| p-px | padding: 1px; |
| p-0.5 | padding: 0.125rem; /_ 2px _/ |
| p-1 | padding: 0.25rem; /_ 4px _/ |
| p-1.5 | padding: 0.375rem; /_ 6px _/ |
| p-2 | padding: 0.5rem; /_ 8px _/ |
| p-2.5 | padding: 0.625rem; /_ 10px _/ |
| p-3 | padding: 0.75rem; /_ 12px _/ |
| p-3.5 | padding: 0.875rem; /_ 14px _/ |
| p-4 | padding: 1rem; /_ 16px _/ |
| p-5 | padding: 1.25rem; /_ 20px _/ |
| p-6 | padding: 1.5rem; /_ 24px _/ |
| p-8 | padding: 2rem; /_ 32px _/ |
| p-10 | padding: 2.5rem; /_ 40px _/ |
| p-12 | padding: 3rem; /_ 48px _/ |
| p-16 | padding: 4rem; /_ 64px _/ |
| p-20 | padding: 5rem; /_ 80px _/ |
| p-24 | padding: 6rem; /_ 96px _/ |
以上数值同样适用于 px、py、pt、pr、pb、pl 前缀。
1 | <!-- 四周统一内边距 --> |
Margin(外边距)
m-* 设置四个方向的外边距,方向前缀与 padding 一致:
| 前缀 | 作用方向 |
|---|---|
| m | 四个方向 |
| mx | 左右 |
| my | 上下 |
| mt | 上 |
| mr | 右 |
| mb | 下 |
| ml | 左 |
常用数值速查:
| Class | Properties |
|---|---|
| m-0 | margin: 0px; |
| m-px | margin: 1px; |
| m-0.5 | margin: 0.125rem; /_ 2px _/ |
| m-1 | margin: 0.25rem; /_ 4px _/ |
| m-1.5 | margin: 0.375rem; /_ 6px _/ |
| m-2 | margin: 0.5rem; /_ 8px _/ |
| m-2.5 | margin: 0.625rem; /_ 10px _/ |
| m-3 | margin: 0.75rem; /_ 12px _/ |
| m-3.5 | margin: 0.875rem; /_ 14px _/ |
| m-4 | margin: 1rem; /_ 16px _/ |
| m-5 | margin: 1.25rem; /_ 20px _/ |
| m-6 | margin: 1.5rem; /_ 24px _/ |
| m-8 | margin: 2rem; /_ 32px _/ |
| m-10 | margin: 2.5rem; /_ 40px _/ |
| m-12 | margin: 3rem; /_ 48px _/ |
| m-16 | margin: 4rem; /_ 64px _/ |
| m-20 | margin: 5rem; /_ 80px _/ |
| m-24 | margin: 6rem; /_ 96px _/ |
| m-auto | margin: auto; |
Margin 支持负值,用 - 前缀表示:
| Class | Properties |
|---|---|
| -m-1 | margin: -0.25rem; /_ -4px _/ |
| -m-2 | margin: -0.5rem; /_ -8px _/ |
| -m-4 | margin: -1rem; /_ -16px _/ |
| -m-8 | margin: -2rem; /_ -32px _/ |
1 | <!-- 四周统一外边距 --> |
space 间距
space-x-* 和 space-y-* 可以在不使用 gap 的情况下给子元素统一加间距(原理是给除第一个子元素外的元素添加 margin):
1 | <div class="flex space-x-4"> |
space-x-reverse 和 space-y-reverse 用于反转排列时修正间距方向。
文字与排版
文字相关工具类覆盖了字号、粗细、颜色、对齐、行高和字间距。
1 | <h1 class="text-2xl font-bold text-gray-900">标题</h1> |
常用字号:text-xs(12px)、text-sm(14px)、text-base(16px)、text-lg(18px)、text-xl(20px)、text-2xl(24px)。
文字截断用 truncate,多行截断需要配合自定义:
1 | <!-- 单行截断 --> |
颜色与背景
Tailwind 内置了完整的调色板,格式为 {属性}-{颜色名}-{色阶}。
1 | <!-- 文字颜色 --> |
透明度通过 / 语法设置:bg-blue-500/50 表示 50% 透明度的蓝色背景。
当内置调色板无法满足需求时,可以用方括号语法直接使用任意色值:
1 | <!-- 直接使用 HEX 色值 --> |
方括号写法适合品牌色、设计稿中的精确色值等一次性场景。如果某个色值在项目中反复使用,建议通过 @theme 提取为语义化变量(如 --color-brand),然后用 bg-brand 引用。
圆角
圆角用 rounded-*,可以快速给元素添加不同大小的圆角。
圆角大小
从无圆角到完全圆形,Tailwind 提供了多个预设尺寸:
1 | <!-- 无圆角 --> |
rounded-full 最常用于圆形头像和圆形按钮:
1 | <img class="rounded-full w-16 h-16" src="avatar.jpg" alt="头像" /> |
方向性圆角
可以单独设置某一边的圆角,前缀如下:
| 前缀 | 作用方向 |
|---|---|
| rounded | 四个角 |
| rounded-t | 上方两个角 |
| rounded-r | 右方两个角 |
| rounded-b | 下方两个角 |
| rounded-l | 左方两个角 |
| rounded-tl | 左上角 |
| rounded-tr | 右上角 |
| rounded-br | 右下角 |
| rounded-bl | 左下角 |
1 | <!-- 只有上方圆角 --> |
常用圆角类名速查
| Class | Properties |
|---|---|
| rounded-none | border-radius: 0px; |
| rounded-sm | border-radius: 0.125rem; |
| rounded | border-radius: 0.25rem; |
| rounded-md | border-radius: 0.375rem; |
| rounded-lg | border-radius: 0.5rem; |
| rounded-xl | border-radius: 0.75rem; |
| rounded-2xl | border-radius: 1rem; |
| rounded-3xl | border-radius: 1.5rem; |
| rounded-full | border-radius: 9999px; |
方向性圆角同样适用以上尺寸,例如 rounded-t-lg、rounded-bl-xl。
自定义圆角
使用方括号语法可以指定任意圆角值:
1 | <!-- 自定义像素值 --> |
实际应用场景
1 | <!-- 卡片组件 --> |
阴影
阴影用 shadow-*:
轻到重递增
shadow-smshadow-mdshadow-lgshadow-xl
溢出
overflow-* 控制元素内容溢出时的行为。
1 | <!-- 隐藏溢出 --> |
也可以单独控制某一方向:
1 | <!-- 仅垂直方向滚动 --> |
常用搭配:overflow-hidden 配合 truncate 做文本截断;overflow-auto 配合 max-h-96 做固定高度可滚动区域;overflow-x-auto 让表格或代码块在小屏上横向滚动。
响应式
Tailwind 采用移动优先策略,默认样式针对最小屏幕,通过前缀在更大屏幕上覆盖。
常用断点:sm(640px)、md(768px)、lg(1024px)、xl(1280px)、2xl(1536px)。
1 | <!-- 小屏单列,中屏两列,大屏四列 --> |
响应式前缀可以叠加在任意工具类上,如 md:text-lg、lg:p-8。
伪类与交互状态
Tailwind 将常见伪类映射为前缀,无需手写 CSS 选择器。
1 | <!-- hover --> |
disabled:opacity-50 设置禁用态透明度,first:mt-0 为列表第一项去掉上边距,odd:bg-gray-50 实现斑马纹。
过渡与动画
过渡效果通过 transition 类加上持续时间和属性控制:
1 | <button |
transition-colors 仅过渡颜色属性,transition-all 过渡所有属性。duration-150、duration-300 控制时长,ease-in、ease-out、ease-in-out 控制缓动。
内置动画类:
1 | <div class="animate-spin">旋转</div> |
自定义配置
当内置工具类不够用时,可以通过 CSS 变量或 @theme 指令扩展。
在 CSS 中自定义主题变量:
1 | @import "tailwindcss"; |
配置完成后即可使用 bg-primary、text-primary-dark、font-sans 等类名。
也可以在 HTML 中用方括号写法直接写任意值:
1 | <div class="top-[117px]">精确偏移</div> |
方括号写法适合一次性或调试场景,复用频率高的值建议提取到主题配置中。
总结
以上是 Tailwind CSS 日常开发中最高频的用法。
核心思路就是用工具类直接在 HTML 中声明样式,保持开发时注意力不离开模板文件。
常用模式记住即可,不常用的类名查阅官方文档即可快速找到。
建议在实际项目中配合 IDE 的 Tailwind 插件获得自动补全和排序,开发体验会更加顺畅。