Bootstrap 响应式布局终极教程
目录
- 引言:什么是响应式布局?
- 核心概念:栅格系统
- 1 工作原理
- 2 栅格选项
- 3 栅格的层级
- 实践:动手搭建你的第一个响应式页面
- 1 准备工作
- 2 基础容器
- 3 创建行和列
- 4 实现响应式效果
- 高级技巧与最佳实践
- 1 响应式工具类
- 2 排序与偏移
- 3 嵌套栅格
- 4 推荐的工作流程
- **---
引言:什么是响应式布局?
在开始之前,我们先理解一个基本概念:响应式布局。

响应式布局是一种网页设计方法,它能让你的网站在不同的设备上(从大尺寸的桌面显示器,到中等的平板电脑,再到小尺寸的手机)都能提供良好的浏览体验。
它的核心思想是:
- 弹性布局:页面元素能够根据屏幕宽度自动调整其大小和位置。
- 媒体查询:通过 CSS 的
@media规则,为不同尺寸的屏幕应用不同的样式。
为什么选择 Bootstrap?
Bootstrap 最大的优势就是将复杂的响应式布局变得极其简单,它通过一套预定义的栅格系统,你只需要通过简单的类名(如 col-md-6)就能快速构建出响应式布局,而无需自己编写复杂的 CSS 媒体查询。
核心概念:栅格系统
Bootstrap 的响应式布局核心是其强大的 12列栅格系统,你可以把它想象成一个无限延伸的网格,你的内容就放置在这个网格的“单元格”里。

1 工作原理
栅格系统主要由以下几个部分组成:
-
容器:包裹并居中整个栅格系统,Bootstrap 提供了两种容器:
.container:一个响应式的、固定宽度的容器,在不同屏幕尺寸下,它的宽度会变化(如px),但在同一断点下是固定的。.container-fluid:一个 100% 宽度的容器,它会始终占满整个视口的宽度。
-
行:
.row元素充当列的容器,它用于清除列的浮动,并作为列的直接父级。行必须放在容器内。 -
列:
.col-*是栅格系统的基本构建块,星号 是一个数字,代表该列占用的 12 列中的份数。
(图片来源网络,侵删).col-4表示该列占 12 列中的 4 份(即 1/3 的宽度)。- 列必须放在
.row内。
-
Gutter(列间距):列与列之间会有一个默认的 15px 的间距(左右各 15px),这个间距由
.row的负margin和.col-*的正padding共同实现。
2 栅格选项
这是 Bootstrap 响应式设计的精髓,Bootstrap 预定义了 6 个断点,对应了 6 种屏幕尺寸范围,你可以为每个断点指定列的宽度。
| 断点 | 前缀 | 屏幕尺寸范围 | 设备类型 |
|---|---|---|---|
| Extra small | col-xs-* |
<576px | 手机 |
| Small | col-sm-* |
≥576px | 大手机、小平板 |
| Medium | col-md-* |
≥768px | 平板、小桌面 |
| Large | col-lg-* |
≥992px | 桌面 |
| Extra large | col-xl-* |
≥1200px | 大桌面 |
| Extra extra large | col-xxl-* |
≥1400px | 超大桌面 |
如何使用? 你可以组合使用这些前缀,实现更精细的控制,最经典的就是 移动优先 的写法。
示例:
<div class="container">
<div class="row">
<!--
在超小屏幕上,col-md-6 会失效,所以这个 div 会占满整行。
在中等屏幕及以上,它会占据一半的宽度。
-->
<div class="col-md-6">
<p>这个区域在中等屏幕及以上占 50%。</p>
</div>
<div class="col-md-6">
<p>这个区域在中等屏幕及以上也占 50%。</p>
</div>
</div>
</div>
为什么这样设计?
这是 移动优先 的思想,默认情况下(没有指定断点,如 col-xs-*),元素在最小的屏幕上占满全宽,通过为更大的屏幕添加特定断点(如 col-md-*),你告诉浏览器:“嘿,当屏幕达到这个尺寸时,请给我这个布局。” 这比“桌面优先”更高效,因为基础样式是为小屏幕优化的,再逐步增强大屏体验。
3 栅格的层级
一个 .row 可以包含多个 .col,一个 .col 也可以再嵌套一个 .row,形成更复杂的布局。
嵌套示例:
<div class="container">
<div class="row">
<div class="col-md-8">
<!-- 外层列 -->
<p>这是外层 8 列的宽度。</p>
<!-- 开始嵌套 -->
<div class="row">
<div class="col-md-6">
<p>这是内层嵌套的 6 列。</p>
</div>
<div class="col-md-6">
<p>这是内层嵌套的另一个 6 列。</p>
</div>
</div>
<!-- 嵌套结束 -->
</div>
<div class="col-md-4">
<p>这是外层 4 列的宽度。</p>
</div>
</div>
</div>
注意:嵌套的 .row 会继承其父级 .col 的宽度,在上面的例子中,内层的 .row 实际上是在外层 .col-md-8 的 8 列宽度内进行再次划分。
实践:动手搭建你的第一个响应式页面
我们通过一个实例来巩固所学知识,我们的目标是创建一个简单的三栏布局,它在不同屏幕上有不同表现。
- 大屏幕:三栏并排(4-4-4)。
- 中等屏幕:两栏并排,第三栏换行(6-6-12)。
- 小屏幕垂直堆叠(12-12-12)。
1 准备工作
创建一个 index.html 文件,并引入 Bootstrap 的 CSS 和 JS 文件,为了更好的开发体验,我们使用 CDN 链接。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<!-- **重要!** 这是响应式布局的 meta 标签,必须添加! -->Bootstrap 响应式布局示例</title>
<!-- 引入 Bootstrap CSS -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<style>
/* 为了方便查看,给每个区块添加一些样式 */
.demo-box {
background-color: #007bff;
color: white;
padding: 20px;
border: 1px solid #0056b3;
text-align: center;
margin-bottom: 15px; /* 增加区块间距 */
}
</style>
</head>
<body>
<div class="container mt-5">
<h1 class="text-center mb-4">我的响应式布局</h1>
<div class="row">
<!-- 栏目 1 -->
<div class="col-md-4 col-12">
<div class="demo-box">
<h2>栏目 1</h2>
<p>在大屏幕上占 4 列,在小屏幕上占满 12 列。</p>
</div>
</div>
<!-- 栏目 2 -->
<div class="col-md-4 col-12">
<div class="demo-box">
<h2>栏目 2</h2>
<p>在大屏幕上占 4 列,在小屏幕上占满 12 列。</p>
</div>
</div>
<!-- 栏目 3 -->
<div class="col-md-4 col-12">
<div class="demo-box">
<h2>栏目 3</h2>
<p>在大屏幕上占 4 列,在小屏幕上占满 12 列。</p>
</div>
</div>
</div>
</div>
<!-- 引入 Bootstrap JS (需要 Popper.js) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
2 基础容器
我们使用了 .container 作为最外层包裹,它会自动居中并限制最大宽度。
3 创建行和列
我们创建了一个 .row,并在其中放了三个 .col-md-4 col-12 的 div。
4 实现响应式效果
现在我们来分析这三个类名是如何协同工作的:
-
col-12:- 这个类没有指定断点,所以它作用于所有屏幕尺寸。
- 它的意思是“在所有屏幕上都占满 12 列”,也就是 100% 宽度。
- 这确保了在手机等小屏幕上,三个区块会从水平排列变成垂直堆叠。
-
col-md-4:- 这个类指定了
md断点(≥768px)。 - 它的意思是“当屏幕宽度达到 768px 或以上时,这个区块占据 4 列的宽度”。
- 因为 3 个
col-md-4加起来正好是 12 列,所以在大屏幕上,它们会并排显示。
- 这个类指定了
效果总结:
- < 768px (手机):
col-12生效,每个区块占满一行,垂直排列。 - ≥ 768px (平板及以上):
col-md-4生效,覆盖了col-12的效果,三个区块各占 1/3,水平排列。
你可以直接保存这个 HTML 文件,然后在浏览器中调整窗口大小,亲眼见证布局的变化!
高级技巧与最佳实践
1 响应式工具类
除了栅格,Bootstrap 还提供了一系列工具类,让你可以快速控制元素的显示/隐藏或对齐方式。
-
显示/隐藏:
.d-none:始终隐藏。.d-block:始终显示为块级元素。.d-md-none:在中等及以上屏幕隐藏。.d-md-block:在中等及以上屏幕显示为块级元素。- 以此类推(
sm,md,lg,xl,xxl)。
-
文本对齐:
.text-center,.text-start,.text-end。- 响应式版本:
.text-md-center(在中等屏幕及以上居中)。
2 排序与偏移
-
排序:使用
.order-*类可以改变列的显示顺序。.order-1和.order-2,数字小的会排在前面。- 响应式排序:
.order-md-1。
-
偏移:使用
.offset-*类可以将列向右偏移。.offset-md-3会让一个列向右偏移 3 列的距离。
3 嵌套栅格
如前所述,嵌套可以创建非常复杂的布局,记住一个原则:外层列的宽度是内层栅格系统的“总宽度”。
4 推荐的工作流程
- 移动优先:先为小屏幕设计布局,所有内容默认垂直堆叠(使用
col-12)。 - 逐步增强:针对更大的屏幕(平板、桌面),添加
col-sm-*,col-md-*等类来调整布局,让内容水平排列或改变宽度。 - 测试,测试,再测试:不要只在自己的 Chrome 浏览器里看,使用浏览器的开发者工具(F12)模拟不同的设备,或者在不同真机上测试,确保效果符合预期。
通过本教程,你应该已经掌握了 Bootstrap 响应式布局的核心:
- 理解栅格系统:它是 Bootstrap 的骨架,由容器、行和列构成。
- 掌握断点前缀:
col-sm-*,col-md-*等是实现响应式布局的关键,它们遵循“移动优先”的原则。 - 实践出真知:通过亲手编写代码,体验布局在不同屏幕尺寸下的变化。
- 善用工具类:利用响应式工具类可以更灵活地控制元素。
Bootstrap 将复杂的响应式设计变得像搭积木一样简单,最好的学习方式就是不断地实践,尝试构建一个包含导航栏、侧边栏、内容区和页脚的完整页面,你的技能会飞速提升!
