Bootstrap 是一个用于快速开发 Web 应用程序和网站的前端框架,它基于 HTML、CSS 和 JavaScript,旨在让 Web 开发更快捷、简单,其核心优势之一就是其强大而灵活的网格系统。

下面我将从最核心的网格系统开始,逐步介绍 Bootstrap 布局的各种组件和最佳实践。
核心:Bootstrap 网格系统
网格系统是 Bootstrap 布局的基石,它将页面划分为一系列的行和列,你可以将内容放入这些列中,从而实现响应式布局。
基本概念
- 容器: 网格系统的外层包裹元素,它有两个主要版本:
.container: 类型的容器,其max-width在每个断点处都会变化。.container-fluid: 宽度为100%,始终占据整个视口宽度。
- 行: 必须放在
.container或.container-fluid内部,行充当列的容器,并清除其子列的浮动。 - **列
行内的直接子元素,列通过内边距(padding)来创建列与列之间的间隔,这个内边距会通过负外边距.row` 来抵消,以确保其内容在视觉上对齐。
重要规则:
- 行
.row必须放在容器.container或.container-fluid中。 - 列
.col-*必须放在行.row中,应该放在列中,而不是直接放在行里。
网格系统的工作原理
Bootstrap 的网格系统是移动优先的,这意味着我们首先为小屏幕(移动设备)设计布局,然后通过断点来增强大屏幕上的显示效果。

-
断点: Bootstrap 定义了五个断点,对应不同的屏幕尺寸: | 断点前缀 | 尺寸范围 | 设备类型 | | :--- | :--- | :--- | |
xs|<576px| 超小手机 | |sm|≥576px| 手机、小平板 | |md|≥768px| 平板、大屏手机 | |lg|≥992px| 小型桌面 | |xl|≥1200px| 大型桌面 | |xxl|≥1400px| 超大型桌面 | -
列类: 列的类名格式为
.col-{breakpoint}-{number}。col-md-4: 表示在md断点及以上时,该列占据 4/12 的宽度(即 1/3)。col-sm-6: 表示在sm断点及以上时,该列占据 6/12 的宽度(即 1/2)。
网格系统示例
示例 1:简单的三列布局
<div class="container">
<div class="row">
<div class="col-md-4">
<h3>第一列</h3>
<p>在中等屏幕及以上,这一列会占据1/3的宽度。</p>
</div>
<div class="col-md-4">
<h3>第二列</h3>
<p>在中等屏幕及以上,这一列也会占据1/3的宽度。</p>
</div>
<div class="col-md-4">
<h3>第三列</h3>
<p>在中等屏幕及以上,这一列同样占据1/3的宽度。</p>
</div>
</div>
</div>
工作原理:

- 在小屏幕上,默认所有列都是 100% 宽度,会垂直堆叠。
- 当屏幕宽度达到
md断点(≥768px)时,.col-md-4生效,三列并排显示,每列占 1/3。
响应式布局技巧
网格系统让响应式布局变得非常简单。
列偏移
使用 .offset-{breakpoint}-{number} 类可以将列向右偏移。
<div class="container">
<div class="row">
<div class="col-md-4">.col-md-4</div>
<!-- 将第二列向右偏移 2 个单位 (2/12) -->
<div class="col-md-4 offset-md-2">.col-md-4 .offset-md-2</div>
</div>
</div>
嵌套
你可以在一个列内再创建一个 .row 和 .col-* 结构,实现更复杂的布局。
<div class="container">
<div class="row">
<div class="col-md-8">
<h3>外部列</h3>
<p>这是一个外部列。</p>
<!-- 嵌套的网格 -->
<div class="row">
<div class="col-md-6">嵌套列 A</div>
<div class="col-md-6">嵌套列 B</div>
</div>
</div>
<div class="col-md-4">
<h3>外部列</h3>
<p>这是另一个外部列。</p>
</div>
</div>
</div>
排序
使用 .order-{breakpoint}-{number} 类可以改变列的显示顺序。
<div class="container">
<div class="row">
<div class="col-md-4 order-md-3">第三列 (在中等屏幕上显示在最后)</div>
<div class="col-md-4 order-md-1">第一列 (在中等屏幕上显示在最前)</div>
<div class="col-md-4 order-md-2">第二列</div>
</div>
</div>
布局组件
除了网格系统,Bootstrap 还提供了大量预构建的布局组件,可以快速搭建页面结构。
Flexbox 实用工具
Bootstrap 4+ 大量使用 Flexbox 来实现布局,提供了一系列非常方便的工具类。
- 对齐:
.justify-content-start,.justify-content-center,.justify-content-end,.align-items-start,.align-items-center,.align-items-end等。 - 方向:
.flex-row,.flex-column。 - 填充:
.flex-grow-1(让一个元素占据所有剩余空间)。
示例:导航栏底部固定
<nav class="navbar navbar-expand-lg navbar-light bg-light">
<div class="container-fluid">
<a class="navbar-brand" href="#">Navbar</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item"><a class="nav-link active" href="#">首页</a></li>
<li class="nav-item"><a class="nav-link" href="#">lt;/a></li>
<li class="nav-item"><a class="nav-link" href="#">联系</a></li>
</ul>
</div>
</div>
</nav>
<div class="container mt-5">
<h1>内容区域</h1>
<p>导航栏会固定在顶部,内容会从它下面开始。</p>
</div>
Gutter (沟槽/间距)
Bootstrap 的网格系统提供了控制列间距(gutter)的实用工具类。
- 水平间距:
g-*(g-3) - 垂直间距:
gx-*(水平间距),gy-*(垂直间距)
<!-- 列间距为 3rem (48px) -->
<div class="container">
<div class="row g-3">
<div class="col-6">列 A</div>
<div class="col-6">列 B</div>
</div>
</div>
完整的布局示例:一个简单的博客首页
下面我们结合以上知识,创建一个包含头部、导航、主内容区和侧边栏的完整布局。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- 引入 Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">Bootstrap 布局示例</title>
</head>
<body>
<!-- 1. 导航栏 -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container">
<a class="navbar-brand" href="#">我的博客</a>
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarNav">
<ul class="navbar-nav ms-auto">
<li class="nav-item"><a class="nav-link active" href="#">首页</a></li>
<li class="nav-item"><a class="nav-link" href="#">文章</a></li>
<li class="nav-item"><a class="nav-link" href="#">关于我</a></li>
<li class="nav-item"><a class="nav-link" href="#">联系</a></li>
</ul>
</div>
</div>
</nav>
<!-- 2. 主要内容区 -->
<div class="container mt-4">
<div class="row">
<!-- 3. 主内容列 -->
<div class="col-lg-8">
<article class="card mb-4">
<img src="https://via.placeholder.com/800x400" class="card-img-top" alt="文章配图">
<div class="card-body">
<h2 class="card-title">这是一篇博客文章的标题</h2>
<p class="card-text">这是文章的摘要部分,可以简要介绍一下文章的主要内容...</p>
<a href="#" class="btn btn-primary">阅读更多</a>
</div>
</article>
<article class="card mb-4">
<div class="card-body">
<h2 class="card-title">这是另一篇博客文章</h2>
<p class="card-text">同样,这里也是文章的摘要...</p>
<a href="#" class="btn btn-primary">阅读更多</a>
</div>
</article>
</div>
<!-- 4. 侧边栏 -->
<div class="col-lg-4">
<div class="card mb-4">
<div class="card-header">
<h5 class="card-title mb-0">关于我</h5>
</div>
<div class="card-body">
<img src="https://via.placeholder.com/150" class="rounded-circle mb-3" alt="头像">
<p>你好!我是一名前端开发者,喜欢分享技术和生活中的点滴。</p>
</div>
</div>
<div class="card">
<div class="card-header">
<h5 class="card-title mb-0">热门标签</h5>
</div>
<div class="card-body">
<div class="d-flex flex-wrap gap-2">
<span class="badge bg-primary">Bootstrap</span>
<span class="badge bg-secondary">Web开发</span>
<span class="badge bg-success">CSS</span>
<span class="badge bg-danger">JavaScript</span>
</div>
</div>
</div>
</div>
</div>
</div>
<!-- 5. 页脚 -->
<footer class="bg-light mt-5 py-4">
<div class="container text-center">
<p class="mb-0">© 2025 我的博客. All rights reserved.</p>
</div>
</footer>
<!-- 引入 Bootstrap JS (需要 Popper.js) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
总结与最佳实践
- 从容器开始: 总是先用
.container或.container-fluid包裹你的内容。 - 行是必须的: 在容器内,用
.row来组织你的列。 - 拥抱响应式: 使用
sm,md,lg,xl等断点前缀来定义不同屏幕尺寸下的布局,而不是为每个尺寸都写一遍。 - 移动优先: 先为小屏幕设计简单布局(单列),然后通过断点来添加更复杂的布局(多列)。
- 善用组件: 不要重复造轮子,直接使用 Bootstrap 提供的导航栏、卡片、按钮等组件,它们都是响应式的。
- 官方文档是你的朋友: Bootstrap 官方文档非常详尽,包含了所有组件和工具类的用法和示例,遇到问题时第一时间查阅文档。
通过掌握这些核心概念和技巧,你就可以使用 Bootstrap 快速构建出美观、响应且功能强大的网页布局。
