跳到正文

弹性布局

Flex

中级通用

弹性布局(Flex)是 CSS 中让容器沿一个方向排列子元素,并分配剩余空间的布局方式。它能帮你处理元素宽度变化后的对齐与间距,比如让工具栏左侧放标题、右侧放操作按钮。

你可能会说:「我想让标题靠左、几个操作按钮靠右,窗口变宽变窄时也能保持对齐。」

读之前建议先了解

动手看看

订单列表
筛选
导出
+ 新建订单
排列方向 flex-direction
主轴对齐 justify-content
交叉轴对齐 align-items

flex 容器决定子元素沿哪条线排、剩余空间怎么分;拖动宽度,看看多出来的空间去了哪里。

两端对齐:第一个和最后一个元素贴边,剩余空间平均分进中间的间隔。「标题在左、按钮在右」的工具栏最常用这一种。

要点

  1. 1

    先确定排列的主方向

    你给父容器设置 Flex 后,直接子元素会沿主轴排列;默认是从左到右,也可以改成纵向。主轴确定后,我们才能说清楚要调整的是元素之间的距离,还是垂直于主轴的对齐。

  2. 2

    剩余空间决定如何分配

    Flex 不只是把元素排成一行。比如工具栏里标题长度会变,你可以让右侧按钮组靠右,或让某个区域占用剩余空间。这样容器变宽时,布局能跟着调整,而不是依赖写死的间距。

  3. 3

    空间不够时检查换行与收缩

    容器变窄时,子元素可能收缩,也可能因为内容太长而溢出;它们不会默认换到下一行。你可以按需求允许换行,并检查文字和按钮的最小宽度,这比只看宽屏效果更可靠。

容易混淆的地方

Flex 主要处理一行或一列中的排列与空间分配。要同时精确控制多行、多列的位置,比如后台仪表盘的卡片区域,网格布局(Grid)通常更合适。定位(Position)则适合让元素脱离常规排列、贴在指定位置;用它排一整行按钮,内容一变就容易互相遮挡。

什么时候用

适合用

  • 做后台页面的顶部工具栏:左侧是页面标题,右侧是筛选和新建按钮,标题长度变化时仍要分居两端。
  • 做商品卡片里的价格与购买按钮:希望它们在同一行,并根据卡片宽度分配空间。
  • 做聊天输入区:输入框占用按钮之外的剩余宽度,发送按钮保持自身所需宽度。

不适合用

  • 要做行列位置都明确的仪表盘卡片区,并让卡片跨越多列时,改用网格布局更直接。
  • 只是想让悬浮客服入口固定在视口角落,与页面内容的排列无关时,用定位更合适。
  • 只想给一段正文设置阅读宽度与左右留白时,设置宽度和外边距就够了,不需要 Flex。

练一练

你在做一个后台工具栏:左侧标题长短不一,右侧有两个按钮;窗口变宽时,按钮组要保持靠右。你会让 AI Agent 采用哪种方案?

让 AI 帮你做

请把后台页面的顶部工具栏改成弹性布局(Flex):左侧放标题,右侧放操作按钮组,两组在宽屏时分居两端。请检查窄屏下标题变长时是否挤压或遮挡按钮,并说明你选择的换行或收缩方案。

接下来学什么