【前端基础知识系列三】Tailwind CSS 核心语法:工具类使用规则详解(附速查表)
引言
Tailwind CSS 之所以能大幅提升开发效率,核心在于其精心设计的工具类体系。这些工具类遵循统一的命名规则,覆盖了几乎所有 CSS 特性,让开发者无需编写自定义样式即可实现复杂界面。本文将系统梳理 Tailwind 工具类的命名逻辑和常用分类,结合代码示例与表格速查两种形式,帮你快速掌握 "组合工具类实现样式" 的核心用法。
一、工具类命名规则:看懂类名就懂用法
Tailwind 的工具类命名采用 "属性 - 值" 的语义化设计,掌握这套规则后,几乎不需要记忆就能猜到类名对应的样式:
基础格式
[属性前缀]-[属性值]
- 例 1:
text-red-500→text(文本属性)+red(颜色)+500(色阶)→ 文本颜色为红色 500 - 例 2:
mx-4→mx(margin-x 缩写)+4(间距单位)→ 水平方向 margin 为 1rem
特殊前缀
-
状态前缀:
hover:(鼠标悬停)、focus:(获取焦点)、active:(点击状态)html
<button class="bg-blue-500 hover:bg-blue-600"></button> -
响应式前缀:
sm:(≥640px)、md:(≥768px)、lg:(≥1024px)等html
<div class="w-full md:w-1/2"></div> <!-- 移动端满宽,平板占一半 -->
二、常用工具类分类与示例
1. 布局与盒模型
(1)弹性布局(Flex)
html
<!-- 基础用法 -->
<div class="flex"></div> <!-- 启用flex布局 -->
<div class="inline-flex"></div> <!-- 行内flex布局 -->
<!-- 主轴对齐(justify-content) -->
<div class="flex justify-start"></div> <!-- 左对齐(默认) -->
<div class="flex justify-center"></div> <!-- 居中对齐 -->
<div class="flex justify-end"></div> <!-- 右对齐 -->
<div class="flex justify-between"></div> <!-- 两端对齐 -->
<!-- 交叉轴对齐(align-items) -->
<div class="flex items-start"></div> <!-- 顶部对齐 -->
<div class="flex items-center"></div> <!-- 垂直居中 -->
<div class="flex items-end"></div> <!-- 底部对齐 -->
<!-- 方向与换行 -->
<div class="flex flex-col"></div> <!-- 垂直方向排列 -->
<div class="flex flex-wrap"></div> <!-- 超出换行 -->
(2)网格布局(Grid)
html
<!-- 定义列数 -->
<div class="grid grid-cols-3"></div> <!-- 3列网格 -->
<div class="grid grid-cols-1 md:grid-cols-2"></div> <!-- 响应式列数 -->
<!-- 间距与对齐 -->
<div class="grid gap-4"></div> <!-- 网格间距 -->
<div class="grid justify-items-center"></div> <!-- 网格项水平居中 -->
<div class="grid content-center"></div> <!-- 网格内容垂直居中 -->
(3)盒模型属性速查表
| 工具类分类 | 工具类示例 | 对应 CSS 样式 | 说明 |
|---|---|---|---|
| 外边距(margin) | m-4 |
margin: 1rem |
四方向 margin |
mt-2 |
margin-top: 0.5rem |
上 margin | |
mx-auto |
margin-left: auto; margin-right: auto |
水平居中(块级元素) | |
| 内边距(padding) | p-6 |
padding: 1.5rem |
四方向 padding |
px-4 |
padding-left: 1rem; padding-right: 1rem |
水平 padding | |
| 宽高 | w-32 |
width: 8rem |
宽度 8rem(32×0.25rem) |
w-1/2 |
width: 50% |
宽度 50% | |
h-full |
height: 100% |
高度 100% | |
w-screen |
width: 100vw |
宽度占满屏幕 |
2. 文本样式
html
<!-- 字体大小 -->
<p class="text-sm"></p> <!-- 小字体(14px) -->
<p class="text-base"></p> <!-- 基础字体(16px,默认) -->
<p class="text-lg"></p> <!-- 大字体(18px) -->
<p class="text-2xl"></p> <!-- 超大字体(24px) -->
<!-- 字体粗细 -->
<p class="font-normal"></p> <!-- 常规(400) -->
<p class="font-medium"></p> <!-- 中等(500) -->
<p class="font-bold"></p> <!-- 粗体(700) -->
<!-- 文本对齐与装饰 -->
<p class="text-left"></p> <!-- 左对齐 -->
<p class="text-center"></p> <!-- 居中对齐 -->
<p class="text-right"></p> <!-- 右对齐 -->
<p class="underline"></p> <!-- 下划线 -->
<p class="line-through"></p> <!-- 删除线 -->
<!-- 文本溢出处理 -->
<p class="truncate w-40"></p> <!-- 超出宽度显示省略号(需指定宽度) -->
<p class="whitespace-nowrap"></p> <!-- 不换行 -->
| 工具类分类 | 工具类示例 | 对应 CSS 样式 | 说明 |
|---|---|---|---|
| 字体大小 | text-sm |
font-size: 0.875rem(14px) |
小字体 |
text-base |
font-size: 1rem(16px) |
基础字体(默认) | |
text-lg |
font-size: 1.125rem(18px) |
大字体 | |
text-2xl |
font-size: 1.5rem(24px) |
超大字体 | |
| 字体粗细 | font-normal |
font-weight: 400 |
常规字重 |
font-medium |
font-weight: 500 |
中等字重 | |
font-bold |
font-weight: 700 |
粗体 |
3. 颜色与背景
(1)颜色系统
Tailwind 内置 10 + 颜色系列,每个颜色分 10 个色阶(100 最浅,900 最深):
html
<!-- 文本颜色 -->
<span class="text-red-500"></span> <!-- 红色(500为标准色) -->
<span class="text-blue-700"></span> <!-- 深蓝色 -->
<span class="text-gray-300"></span> <!-- 浅灰色 -->
<!-- 背景颜色 -->
<div class="bg-green-100"></div> <!-- 浅绿色背景 -->
<div class="bg-purple-900"></div> <!-- 深紫色背景 -->
(2)背景与渐变
html
<!-- 背景图片 -->
<div class="bg-cover bg-center" style="background-image: url('img.jpg')"></div>
<!-- 渐变背景 -->
<div class="bg-gradient-to-r from-blue-500 to-indigo-600"></div> <!-- 从左到右渐变 -->
<div class="bg-gradient-to-br from-pink-500 to-yellow-500"></div> <!-- 从左上到右下渐变 -->
| 工具类分类 | 工具类示例 | 对应 CSS 样式 | 说明 |
|---|---|---|---|
| 文本颜色 | text-red-500 |
color: rgb(239 68 68) |
红色文本(500 为标准色阶) |
text-blue-700 |
color: rgb(29 78 216) |
深蓝色文本(700 为深色阶) | |
| 背景颜色 | bg-green-100 |
background-color: rgb(167 243 208) |
浅绿色背景(100 为最浅) |
bg-purple-900 |
background-color: rgb(76 29 149) |
深紫色背景(900 为最深) | |
| 渐变背景 | bg-gradient-to-r |
background-image: linear-gradient(to right, ...) |
从左到右渐变 |
4. 边框与阴影
html
<!-- 边框 -->
<div class="border"></div> <!-- 默认边框(1px solid #e5e7eb) -->
<div class="border-2 border-red-500"></div> <!-- 2px红色边框 -->
<div class="border-t border-b"></div> <!-- 只显示上下边框 -->
<!-- 圆角 -->
<div class="rounded"></div> <!-- 轻微圆角(0.25rem) -->
<div class="rounded-lg"></div> <!-- 大圆角(0.5rem) -->
<div class="rounded-full"></div> <!-- 全圆角(圆形) -->
<div class="rounded-tl-xl"></div> <!-- 左上超大圆角 -->
<!-- 阴影 -->
<div class="shadow"></div> <!-- 轻微阴影 -->
<div class="shadow-md"></div> <!-- 中等阴影 -->
<div class="shadow-lg"></div> <!-- 大阴影 -->
<div class="shadow-inner"></div> <!-- 内阴影 -->
| 工具类分类 | 工具类示例 | 对应 CSS 样式 | 说明 |
|---|---|---|---|
| 边框基础 | border |
border-width: 1px; border-style: solid; border-color: #e5e7eb |
默认边框(浅灰色) |
border-2 |
border-width: 2px |
边框宽度 2px | |
border-red-500 |
border-color: rgb(239 68 68) |
红色边框 | |
| 圆角 | rounded |
border-radius: 0.25rem |
轻微圆角 |
rounded-lg |
border-radius: 0.5rem |
大圆角 | |
rounded-full |
border-radius: 9999px |
全圆角(圆形,需宽高相等) | |
| 阴影 | shadow |
box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1) |
轻微阴影 |
shadow-lg |
box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1) |
大阴影 |
5. 交互状态控制
html
<!-- 悬停状态 -->
<button class="hover:bg-blue-600 hover:text-white"></button>
<!-- 焦点状态(表单元素常用) -->
<input class="focus:border-blue-500 focus:ring-2 focus:ring-blue-200">
<!-- 禁用状态 -->
<button class="disabled:opacity-50 disabled:cursor-not-allowed"></button>
<!-- active状态(点击时) -->
<button class="active:scale-95"></button> <!-- 点击时缩小5% -->
| 工具类分类 | 工具类示例 | 对应 CSS 样式 | 说明 |
|---|---|---|---|
| 交互状态 | hover:bg-blue-600 |
&:hover { background-color: rgb(37 99 235) } |
鼠标悬停时生效 |
focus:border-blue-500 |
&:focus { border-color: rgb(59 130 246) } |
获取焦点时生效 | |
active:scale-95 |
&:active { transform: scale(0.95) } |
点击时生效(缩小 5%) | |
disabled:opacity-50 |
&:disabled { opacity: 0.5 } |
禁用状态时生效 |
三、响应式设计:一套代码适配多端
Tailwind 预设 5 个断点前缀,按屏幕尺寸从小到大排列:
| 前缀 | 最小宽度 | 说明 |
|---|---|---|
| 无前缀 | 默认 | 移动端(<640px) |
sm: |
640px | 小屏幕平板 |
md: |
768px | 中等屏幕平板 |
lg: |
1024px | 笔记本 / 小桌面 |
xl: |
1280px | 桌面显示器 |
2xl: |
1536px | 大屏幕显示器 |
使用示例:
html
<!-- 移动端单列,平板双列,桌面四列 -->
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4"></div>
<!-- 文本大小随屏幕变化 -->
<p class="text-base sm:text-lg md:text-xl"></p>
<!-- 隐藏/显示元素 -->
<div class="hidden sm:block"></div> <!-- 移动端隐藏,平板及以上显示 -->
注意:响应式前缀需按从小到大的顺序编写,避免样式覆盖异常。
四、工具类组合技巧
-
原子化组合:直接在元素上组合多个工具类实现复杂样式
html
<div class="flex items-center justify-between p-4 border rounded-lg shadow-sm"> <!-- 内容 --> </div> -
条件切换:通过逻辑判断动态添加类名(以 React 为例)
tsx
const Card = ({ isActive }) => ( <div className={`p-4 border ${isActive ? 'border-blue-500 bg-blue-50' : 'border-gray-200'}`}> 卡片内容 </div> ); -
优先级处理:后写的类名会覆盖先写的(同属性)
html
<!-- 最终文本颜色为red-500(后写的覆盖先写的) --> <p class="text-blue-500 text-red-500"></p>
总结
Tailwind 工具类的核心优势在于语义化命名和原子化拆分:
- 掌握命名规则后,看到类名就知道对应样式(如
justify-center必然是justify-content: center) - 无需编写 CSS 文件,直接通过类名组合实现样式,大幅减少上下文切换
- 响应式前缀和状态前缀让交互与适配变得简单直观
建议将本文作为速查表,开发时对照查找。遇到不确定的样式时,可参考 Tailwind 官方文档 的搜索功能 —— 直接搜索 CSS 属性(如 "flex"、"border-radius")即可找到对应的工具类。熟练后,你会发现开发界面的效率会有质的提升!
本文是「前端基础知识系列」的第三篇,聚焦Tailwind CSS 核心语法。后续将持续更新更多前端开发必备的基础知识点。关注作者,每天掌握一个前端基础知识点,逐步构建完整的技术体系~
更多推荐

所有评论(0)