Tailwind CSS的Flex布局

在 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-1flex-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 属性的封装,核心用法是:

  1. flex 定义容器;
  2. flex-row/flex-col 控制方向;
  3. justify-* 控制主轴对齐;
  4. items-* 控制交叉轴对齐;
  5. flex-1/gap-* 控制项目伸缩和间距。

通过这些类的组合,可以快速实现各种灵活的布局(如导航栏、卡片网格、按钮组等),无需手写复杂的 CSS

相关推荐
cxxcode5 小时前
CSS Loader 与样式处理链路
前端·css
CappuccinoRose7 小时前
CSS、Less、Sass(含 SCSS)、Stylus
前端·css·less·sass·stylus
用户059540174461 天前
把前端内存泄漏排查从2小时压到5分钟,我们把它集成进了CI
前端·css
zhanghaofaowhrql3 天前
为CSDN博客编辑器安装自定义CSS主题,打造个性化写作界面
前端·css·编辑器
aichitang20243 天前
Claude fable 5与GPT5.5模型能力实测
javascript·css·人工智能·ai·html·html5
就叫飞六吧3 天前
F12 控制台日志移植到页面案例
javascript·css·html
Bigger5 天前
对不起!我错怪你了,UnoCSS:一次和 AI 一起排查 DevTools 卡顿的经历
前端·css·人工智能
触底反弹5 天前
🎲 纯 CSS 搞定 3D 旋转立方体?还附赠一个「天坑」解决方案!
前端·css·html
finyouIT5 天前
锚点实现了点击导航平滑滚动到页面指定位置的三种方法
javascript·css
用户059540174465 天前
用了半年 LangChain Memory,才发现记忆总“串台”——3 个自动化测试避坑指南
前端·css