Tailwind CSS Flexbox #

弹性容器 #

启用 Flexbox #

html
<!-- 块级弹性容器 -->
<div class="flex">
  <div>项目 1</div>
  <div>项目 2</div>
</div>

<!-- 内联弹性容器 -->
<div class="inline-flex">
  <div>项目 1</div>
  <div>项目 2</div>
</div>

弹性方向(Flex Direction) #

主轴方向 #

html
<!-- 水平方向,从左到右(默认) -->
<div class="flex flex-row">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- 水平方向,从右到左 -->
<div class="flex flex-row-reverse">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- 垂直方向,从上到下 -->
<div class="flex flex-col">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

<!-- 垂直方向,从下到上 -->
<div class="flex flex-col-reverse">
  <div>1</div>
  <div>2</div>
  <div>3</div>
</div>

响应式方向 #

html
<!-- 移动端垂直,桌面端水平 -->
<div class="flex flex-col md:flex-row">
  <div>项目 1</div>
  <div>项目 2</div>
</div>

弹性换行(Flex Wrap) #

html
<!-- 不换行(默认) -->
<div class="flex flex-nowrap">
  <div class="w-64">项目 1</div>
  <div class="w-64">项目 2</div>
  <div class="w-64">项目 3</div>
</div>

<!-- 换行 -->
<div class="flex flex-wrap">
  <div class="w-64">项目 1</div>
  <div class="w-64">项目 2</div>
  <div class="w-64">项目 3</div>
</div>

<!-- 反向换行 -->
<div class="flex flex-wrap-reverse">
  <div class="w-64">项目 1</div>
  <div class="w-64">项目 2</div>
  <div class="w-64">项目 3</div>
</div>

主轴对齐(Justify Content) #

控制项目在主轴上的对齐方式:

html
<!-- 起点对齐(默认) -->
<div class="flex justify-start">
  <div>项目</div>
</div>

<!-- 终点对齐 -->
<div class="flex justify-end">
  <div>项目</div>
</div>

<!-- 居中对齐 -->
<div class="flex justify-center">
  <div>项目</div>
</div>

<!-- 两端对齐 -->
<div class="flex justify-between">
  <div>项目 1</div>
  <div>项目 2</div>
</div>

<!-- 环绕对齐 -->
<div class="flex justify-around">
  <div>项目 1</div>
  <div>项目 2</div>
</div>

<!-- 均匀对齐 -->
<div class="flex justify-evenly">
  <div>项目 1</div>
  <div>项目 2</div>
</div>

交叉轴对齐(Align Items) #

控制项目在交叉轴上的对齐方式:

html
<!-- 拉伸填满(默认) -->
<div class="flex items-stretch h-32">
  <div>项目</div>
</div>

<!-- 起点对齐 -->
<div class="flex items-start h-32">
  <div>项目</div>
</div>

<!-- 终点对齐 -->
<div class="flex items-end h-32">
  <div>项目</div>
</div>

<!-- 居中对齐 -->
<div class="flex items-center h-32">
  <div>项目</div>
</div>

<!-- 基线对齐 -->
<div class="flex items-baseline h-32">
  <div>项目</div>
</div>

多行对齐(Align Content) #

控制多行在交叉轴上的对齐方式:

html
<!-- 起点对齐 -->
<div class="flex flex-wrap content-start h-64">
  <div class="w-1/3">项目</div>
</div>

<!-- 终点对齐 -->
<div class="flex flex-wrap content-end h-64">
  <div class="w-1/3">项目</div>
</div>

<!-- 居中对齐 -->
<div class="flex flex-wrap content-center h-64">
  <div class="w-1/3">项目</div>
</div>

<!-- 两端对齐 -->
<div class="flex flex-wrap content-between h-64">
  <div class="w-1/3">项目</div>
</div>

<!-- 环绕对齐 -->
<div class="flex flex-wrap content-around h-64">
  <div class="w-1/3">项目</div>
</div>

<!-- 均匀对齐 -->
<div class="flex flex-wrap content-evenly h-64">
  <div class="w-1/3">项目</div>
</div>

单个项目对齐(Align Self) #

控制单个项目在交叉轴上的对齐方式:

html
<div class="flex h-32">
  <div class="self-auto">自动</div>
  <div class="self-start">起点</div>
  <div class="self-end">终点</div>
  <div class="self-center">居中</div>
  <div class="self-stretch">拉伸</div>
  <div class="self-baseline">基线</div>
</div>

弹性增长(Flex Grow) #

html
<!-- 不增长(默认) -->
<div class="flex">
  <div class="grow-0">不增长</div>
  <div class="grow">增长</div>
</div>

<!-- 等比例增长 -->
<div class="flex">
  <div class="grow">项目 1</div>
  <div class="grow">项目 2</div>
  <div class="grow">项目 3</div>
</div>

<!-- 不同比例增长 -->
<div class="flex">
  <div class="grow">1 份</div>
  <div class="grow-[2]">2 份</div>
  <div class="grow-[3]">3 份</div>
</div>

弹性收缩(Flex Shrink) #

html
<!-- 收缩(默认) -->
<div class="flex">
  <div class="shrink">可收缩</div>
  <div class="shrink-0">不收缩</div>
</div>

<!-- 不同比例收缩 -->
<div class="flex">
  <div class="shrink">收缩比例 1</div>
  <div class="shrink-2">收缩比例 2</div>
</div>

弹性基础(Flex Basis) #

html
<!-- 自动 -->
<div class="flex">
  <div class="basis-auto">自动</div>
</div>

<!-- 固定值 -->
<div class="flex">
  <div class="basis-1/4">25%</div>
  <div class="basis-1/2">50%</div>
  <div class="basis-1/4">25%</div>
</div>

<!-- 任意值 -->
<div class="flex">
  <div class="basis-[200px]">200px</div>
</div>

Flex 简写 #

html
<!-- flex: 1 1 0% -->
<div class="flex-1">flex: 1</div>

<!-- flex: 1 1 auto -->
<div class="flex-auto">flex: auto</div>

<!-- flex: 0 1 auto -->
<div class="flex-initial">flex: initial</div>

<!-- flex: none -->
<div class="flex-none">flex: none</div>

常见用法 #

html
<!-- 侧边栏固定,内容区自适应 -->
<div class="flex">
  <aside class="flex-none w-64">侧边栏</aside>
  <main class="flex-1">主内容</main>
</div>

<!-- 等宽分布 -->
<div class="flex">
  <div class="flex-1">项目 1</div>
  <div class="flex-1">项目 2</div>
  <div class="flex-1">项目 3</div>
</div>

顺序(Order) #

html
<div class="flex">
  <div class="order-2">第二</div>
  <div class="order-1">第一</div>
  <div class="order-3">第三</div>
</div>

<!-- 首位 -->
<div class="order-first">首位</div>

<!-- 末位 -->
<div class="order-last">末位</div>

<!-- 无顺序 -->
<div class="order-none">无顺序</div>

间隙(Gap) #

html
<!-- 统一间隙 -->
<div class="flex gap-4">
  <div>项目 1</div>
  <div>项目 2</div>
</div>

<!-- 行间隙 -->
<div class="flex flex-wrap gap-x-4 gap-y-2">
  <div>项目</div>
</div>

实战示例 #

导航栏 #

html
<nav class="flex items-center justify-between px-6 py-4 bg-white shadow">
  <div class="flex items-center space-x-4">
    <span class="font-bold text-xl">Logo</span>
  </div>
  <div class="flex items-center space-x-6">
    <a href="#">首页</a>
    <a href="#">关于</a>
    <a href="#">联系</a>
  </div>
</nav>

卡片布局 #

html
<div class="flex flex-wrap gap-6">
  <div class="flex-1 min-w-[280px] bg-white rounded-lg shadow p-6">
    卡片 1
  </div>
  <div class="flex-1 min-w-[280px] bg-white rounded-lg shadow p-6">
    卡片 2
  </div>
  <div class="flex-1 min-w-[280px] bg-white rounded-lg shadow p-6">
    卡片 3
  </div>
</div>

居中布局 #

html
<!-- 完全居中 -->
<div class="flex items-center justify-center min-h-screen">
  <div class="text-center">
    <h1 class="text-4xl font-bold">居中内容</h1>
  </div>
</div>

两端布局 #

html
<div class="flex justify-between items-center">
  <div>左侧内容</div>
  <div>右侧内容</div>
</div>

圣杯布局 #

html
<div class="flex flex-col min-h-screen">
  <header class="h-16 bg-gray-100">头部</header>
  <div class="flex flex-1">
    <aside class="w-64 bg-gray-200">侧边栏</aside>
    <main class="flex-1 bg-white">主内容</main>
    <aside class="w-64 bg-gray-200">右侧栏</aside>
  </div>
  <footer class="h-12 bg-gray-100">底部</footer>
</div>

底部固定按钮 #

html
<div class="flex flex-col h-screen">
  <main class="flex-1 overflow-y-auto">
    内容区域
  </main>
  <footer class="p-4 bg-white border-t">
    <button class="w-full bg-blue-500 text-white py-2 rounded">
      提交
    </button>
  </footer>
</div>

下一步 #

掌握 Flexbox 后,继续学习 Grid 了解网格布局!

最后更新:2026-03-28