跳到主要内容

Flexbox 网格系统实战:从基础到高级布局技巧

2026-05-28 ·

Bootstrap 5 的网格系统基于 Flexbox 构建,相比 Bootstrap 4 的 float 网格更加灵活强大。本文将带你从基础到高级,全面掌握 Flexbox 网格系统的使用方法。

1. 网格基础

Bootstrap 网格系统使用容器、行和列的层级结构进行布局。每个行被分为 12 列,通过不同的组合方式实现灵活的响应式布局。

<div class="container">
  <div class="row">
    <div class="col-md-8">左侧内容 (8列)</div>
    <div class="col-md-4">右侧内容 (4列)</div>
  </div>
</div>
.col-md-8 表示在 md(768px)及以上断点占 8 列,小于该断点会自动堆叠为 100% 宽度。

2. 等宽列与自动布局

使用 .col 类可以创建自动等分的列,无需指定具体的列数。所有列将平均分配可用宽度。

<div class="container">
  <div class="row">
    <div class="col">列 1</div>
    <div class="col">列 2</div>
    <div class="col">列 3</div>
  </div>
</div>

也可以混合固定列和自适应列:

<div class="row">
  <div class="col-auto">自适应宽度</div>
  <div class="col">占满剩余空间</div>
</div>

3. 响应式断点

Bootstrap 5 提供 6 个断点,覆盖从手机到大屏显示器的所有设备:

断点类前缀最小宽度设备
Extra small.col-<576px手机竖屏
Small.col-sm-576px手机横屏
Medium.col-md-768px平板
Large.col-lg-992px小屏桌面
Extra large.col-xl-1200px大屏桌面
XX large.col-xxl-1400px超大屏

多个断点组合使用,可以实现精细的响应式控制:

<div class="col-12 col-md-6 col-lg-4 col-xl-3">
  手机端满宽 / 平板半宽 / 桌面 1/3 / 大屏 1/4
</div>

4. 水平对齐

使用行级别的 Flexbox 对齐类控制列在水平方向上的位置:

<div class="row justify-content-start">靠左</div>
<div class="row justify-content-center">居中</div>
<div class="row justify-content-end">靠右</div>
<div class="row justify-content-around">均匀分布</div>
<div class="row justify-content-between">两端对齐</div>

5. 垂直对齐

<div class="row align-items-start">顶部对齐</div>
<div class="row align-items-center">垂直居中</div>
<div class="row align-items-end">底部对齐</div>

列级别也可以单独设置垂直对齐:

<div class="col align-self-center">此列垂直居中</div>

6. 嵌套网格

在一个 .col 内部再次使用 .row 即可实现网格嵌套,每个嵌套层依然使用 12 列系统。

<div class="row">
  <div class="col-md-6">
    <div class="row">
      <div class="col-6">内层 6 列</div>
      <div class="col-6">内层 6 列</div>
    </div>
  </div>
  <div class="col-md-6">外层 6 列</div>
</div>

7. 列偏移

使用 .offset-* 类可以将列向右移动指定的列数:

<div class="row">
  <div class="col-md-4">内容</div>
  <div class="col-md-4 offset-md-4">右对齐内容</div>
</div>

8. 行列(Row Columns)

.row-cols-* 是一个非常实用的类,它可以快速将行内的列等分为指定的列数,无需为每个列单独设置宽度。这在卡片网格、产品列表等场景中尤其方便。

<div class="row row-cols-1 row-cols-sm-2 row-cols-md-3 row-cols-lg-4">
  <div class="col">卡片 1</div>
  <div class="col">卡片 2</div>
  <div class="col">卡片 3</div>
  <div class="col">卡片 4</div>
  <div class="col">卡片 5</div>
  <div class="col">卡片 6</div>
  <div class="col">卡片 7</div>
  <div class="col">卡片 8</div>
</div>

上面的代码在手机上每行 1 列,平板(sm)每行 2 列,中屏(md)每行 3 列,大屏(lg)及以上每行 4 列。无需为每个 .col 单独指定 .col-* 类。

行列类结合不等宽列使用也很灵活:

<div class="row row-cols-md-3">
  <div class="col">等分列 1</div>
  <div class="col">等分列 2</div>
  <div class="col-6">占据两倍的宽列</div>
</div>

9. 间距类(Gutter)

Bootstrap 5 使用 .g-*.gx-*(水平间距)和 .gy-*(垂直间距)类来控制列之间的间距。相比 Bootstrap 4 的负 margin 方式,新的 gutter 系统更加直观。

间距大小说明
.g-00无间距
.g-10.25rem最小间距
.g-20.5rem小间距
.g-31rem默认间距
.g-41.5rem中等间距
.g-53rem大间距
<!-- 水平垂直间距均为 3(1rem) -->
<div class="row g-3">
  <div class="col-md-4">内容</div>
  <div class="col-md-4">内容</div>
  <div class="col-md-4">内容</div>
</div>

<!-- 仅控制水平间距,垂直间距为 0 -->
<div class="row gx-4 gy-0">
  <div class="col-md-6">内容</div>
  <div class="col-md-6">内容</div>
</div>
.g-* 类应添加到 .row 上而非 .col 上,同时 .row 的负 margin 会自动抵消容器内边距,确保与你理解的视觉间距一致。

10. 实践技巧:常见布局模式

模式一:左侧固定 + 右侧自适应
<div class="row">
  <div class="col-md-3">侧边栏(固定宽度)</div>
  <div class="col-md-9">主内容区(自适应)</div>
</div>
模式二:内容居中(偏移法)
<div class="row justify-content-center">
  <div class="col-md-8 col-lg-6">
    居中内容区域,桌面版不超过一半宽度</div>
</div>
模式三:等高列(默认行为)
<div class="row">
  <div class="col-md-4 d-flex">
    <div class="card p-3 w-100">等高卡片 1</div>
  </div>
  <div class="col-md-4 d-flex">
    <div class="card p-3 w-100">等高卡片 2(内容更多)</div>
  </div>
  <div class="col-md-4 d-flex">
    <div class="card p-3 w-100">等高卡片 3</div>
  </div>
</div>
模式四:网格顺序反转(列排序)
<div class="row">
  <div class="col-md-6 order-md-2">移动端上方,桌面端右侧</div>
  <div class="col-md-6 order-md-1">移动端下方,桌面端左侧</div>
</div>

11. 响应式断点速查表

断点名称 类前缀 最小宽度 容器最大宽 适用场景
xs.col-<576px100%旧手机竖屏
sm.col-sm-576px540px手机横屏、大屏手机
md.col-md-768px720px平板竖屏
lg.col-lg-992px960px平板横屏、小屏笔记本
xl.col-xl-1200px1140px桌面显示器
xxl.col-xxl-1400px1320px超大屏显示器

建议在设计时采用 Mobile First 策略:先定义手机端的布局(.col-12),然后逐级递增加大断点的覆盖。

经验法则:大多数项目只需要用到 smmdlg 三个断点即可覆盖 95% 的设备。不要过度设计多余的断点层级。

总结

掌握 Bootstrap 5 的 Flexbox 网格系统是构建响应式页面的基础。从简单的等分布局到复杂的嵌套结构,网格系统提供了足够的灵活性来应对各种设计需求。关键是理解断点的含义、熟悉对齐类,并在实际项目中多加练习。

本网站使用 Cookie 来提升您的浏览体验。隐私政策