在 Tailwind CSS 中,Flex 布局是通过一系列预定义的工具类来实现的,这些类对应 CSS 原生的 Flex 布局属性,让开发者可以快速构建灵活的响应式布局。以下是 Tailwind 中 Flex 布局的核心知识点:
一、开启 Flex 布局(定义容器)
要使用 Flex 布局,首先需要将父元素定义为 Flex 容器,使用 flex 类(对应 CSS 的 display: flex):
html
预览
<div class="flex">
<!-- 子元素会成为 Flex 项目,沿水平方向排列 -->
<div>项目1</div>
<div>项目2</div>
<div>项目3</div>
</div>
- 容器内的直接子元素会自动成为 "Flex 项目",默认沿水平方向(主轴)排列。
- 可选变体:
inline-flex(对应display: inline-flex),使容器本身为行内元素,宽度由内容决定。
二、主轴方向(flex-direction)
主轴是 Flex 项目排列的方向,默认是水平向左。Tailwind 提供以下类控制主轴方向:
| Tailwind 类 | CSS 对应属性 | 说明 |
|---|---|---|
flex-row |
flex-direction: row |
主轴水平(默认),从左到右 |
flex-row-reverse |
flex-direction: row-reverse |
主轴水平,从右到左 |
flex-col |
flex-direction: column |
主轴垂直,从上到下 |
flex-col-reverse |
flex-direction: column-reverse |
主轴垂直,从下到上 |
示例:垂直排列项目
html
预览
<div class="flex flex-col">
<div>项目1(上)</div>
<div>项目2</div>
<div>项目3(下)</div>
</div>
三、主轴对齐(justify-content)
控制 Flex 项目在主轴上的对齐方式(水平方向或垂直方向,取决于主轴方向):
| Tailwind 类 | CSS 对应属性 | 说明 |
|---|---|---|
justify-start |
justify-content: flex-start |
项目靠主轴起点对齐(默认) |
justify-end |
justify-content: flex-end |
项目靠主轴终点对齐 |
justify-center |
justify-content: center |
项目在主轴居中对齐 |
justify-between |
justify-content: space-between |
项目两端对齐,中间间距相等(常用) |
justify-around |
justify-content: space-around |
项目两侧间距相等(总间距是中间的 2 倍) |
justify-evenly |
justify-content: space-evenly |
所有项目间距(包括边缘)完全相等 |
示例:两端对齐(常见于导航栏左右分布)
html
预览
<div class="flex justify-between">
<div>左侧logo</div>
<div>右侧菜单</div>
</div>
四、交叉轴对齐(align-items)
控制 Flex 项目在交叉轴上的对齐方式(与主轴垂直的方向):
| Tailwind 类 | CSS 对应属性 | 说明 |
|---|---|---|
items-start |
align-items: flex-start |
项目靠交叉轴起点对齐 |
items-end |
align-items: flex-end |
项目靠交叉轴终点对齐 |
items-center |
align-items: center |
项目在交叉轴居中对齐(常用,垂直居中) |
items-baseline |
align-items: baseline |
项目沿基线对齐(文字基线对齐) |
items-stretch |
align-items: stretch |
项目拉伸填满交叉轴(默认) |
示例:垂直居中(常见于导航栏文字 / 图标对齐)
html
预览
<div class="flex items-center">
<i class="fa fa-search"></i>
<span>搜索</span> <!-- 图标和文字垂直居中对齐 -->
</div>
五、项目伸缩性(flex)
控制 Flex 项目如何分配容器的剩余空间,核心类是 flex-1、flex-auto 等:
| Tailwind 类 | CSS 对应属性 | 说明 |
|---|---|---|
flex-1 |
flex: 1 1 0% |
项目会拉伸填充剩余空间(常用) |
flex-auto |
flex: 1 1 auto |
项目优先使用自身宽度,剩余空间再分配 |
flex-initial |
flex: 0 1 auto |
项目不拉伸,仅收缩(默认) |
flex-none |
flex: none |
项目不拉伸也不收缩,固定自身宽度 |
示例:自适应按钮布局
html
预览
<div class="flex gap-2">
<button class="flex-1">占满剩余宽度</button> <!-- 拉伸填充 -->
<button>固定宽度</button>
</div>
六、项目间距(gap)
控制 Flex 项目之间的间距(包括水平和垂直方向),替代传统的 margin 实现均匀间距:
| Tailwind 类 | 说明 |
|---|---|
gap-x-{n} |
水平方向项目间距(n 是 Tailwind 单位,如 gap-x-4 表示 1rem) |
gap-y-{n} |
垂直方向项目间距 |
gap-{n} |
同时设置水平和垂直方向间距 |
示例:图标均匀分布
html
预览
<div class="flex gap-4"> <!-- 所有项目间距为 1rem -->
<i class="fa fa-facebook"></i>
<i class="fa fa-twitter"></i>
<i class="fa fa-instagram"></i>
</div>
七、换行控制(flex-wrap)
当项目总宽度超过容器时,控制是否换行:
| Tailwind 类 | CSS 对应属性 | 说明 |
|---|---|---|
flex-wrap |
flex-wrap: wrap |
超出时换行 |
flex-nowrap |
flex-wrap: nowrap |
不换行(默认,项目会被压缩) |
flex-wrap-reverse |
flex-wrap: wrap-reverse |
换行,但新行在上方 |
示例:自动换行的卡片布局
html
预览
<div class="flex flex-wrap gap-4">
<div class="w-32">卡片1</div>
<div class="w-32">卡片2</div>
<div class="w-32">卡片3</div> <!-- 超出容器宽度时自动换行 -->
</div>
八、响应式适配
Tailwind 可以通过断点前缀(如 sm:、md:)实现不同屏幕尺寸的 Flex 布局调整:
html
预览
<div class="flex flex-col md:flex-row md:justify-between">
<!-- 小屏幕:垂直排列 -->
<!-- 中等屏幕及以上:水平排列 + 两端对齐 -->
<div>左侧</div>
<div>右侧</div>
</div>
总结
Tailwind 的 Flex 布局类本质是对 CSS 原生 Flex 属性的封装,核心用法是:
- 用
flex定义容器; - 用
flex-row/flex-col控制方向; - 用
justify-*控制主轴对齐; - 用
items-*控制交叉轴对齐; - 用
flex-1/gap-*控制项目伸缩和间距。
通过这些类的组合,可以快速实现各种灵活的布局(如导航栏、卡片网格、按钮组等),无需手写复杂的 CSS