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

相关推荐
摇滚侠2 小时前
CSS(层叠样式表)和SCSS(Sassy CSS)的核心区别
前端·css·scss
晴殇i4 小时前
《效率翻倍!12个被90%前端忽视的CSS神技》
前端·css·面试
阿明Drift5 小时前
使用 CSS `perspective` 实现 3D 卡片效果
前端·css
Kikyo--7 小时前
前端基础面试题(Css,Html,Js,Ts)
前端·javascript·css·typescript·html
烟袅9 小时前
🎯 `:nth-child` vs `:nth-of-type`:CSS 伪类的“兄弟之争”
前端·css
抹茶生活9 小时前
CSS浮动样式
前端·css
悟能不能悟9 小时前
java格式化BigDecimal為#,###,##0.00
java·css·css3
weixin_4277716119 小时前
css font-size 的妙用
前端·css
liangshanbo121521 小时前
CSS 数学函数完全指南:从基础计算到高级动画
前端·css