什么是响应式网站?
响应式网站是一种网页设计方法,旨在让网站在不同设备和屏幕尺寸(如桌面、平板、手机)上都能提供最佳的浏览体验,它会自动调整布局、字体大小、图片和导航菜单等元素,以适应当前视口的宽度。

为什么选择 Bootstrap?
Bootstrap 是目前最流行的前端开源框架之一,它极大地简化了响应式网站的开发过程。
核心优势:
- 移动优先:Bootstrap 的设计哲学是从小屏幕开始,然后逐步增强到大屏幕,这确保了在移动设备上的基础体验是良好的。
- 预置的响应式栅格系统:这是 Bootstrap 的灵魂,它提供了一套强大、灵活的布局系统,让你能轻松创建适应各种屏幕的布局。
- 丰富的组件库:开箱即用的大量预置样式组件,如导航栏、轮播图、模态框、警告框、卡片等,大大减少了开发时间。
- 强大的 JavaScript 插件:通过 jQuery,Bootstrap 提供了交互性强的插件,如下拉菜单、折叠面板、工具提示等。
- 高度可定制:你可以通过其官方定制页面,只选择你需要的组件和变量,生成一个更小、更精简的 Bootstrap 文件。
- 完善的文档和社区:遇到问题几乎都能在官方文档或社区中找到答案。
构建一个 Bootstrap 响应式网站的核心步骤
我们将通过一个典型的博客/企业官网布局来讲解。
步骤 1:搭建基础 HTML 结构
创建一个 HTML 文件,并引入 Bootstrap 的 CSS 和 JavaScript 文件。请注意,JavaScript 文件(包括 Popper.js)通常放在 <body> 结束标签之前,以确保页面内容优先加载。

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">我的响应式网站</title>
<!-- 1. 引入 Bootstrap CSS (使用 CDN) -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- 可选:自定义样式 -->
<style>
/* 在这里添加你自己的 CSS */
body {
background-color: #f8f9fa;
}
.navbar-brand {
font-weight: bold;
}
</style>
</head>
<body>
<!-- 页面内容将在这里 -->
<!-- 2. 引入 Bootstrap JS (包括 Popper.js) 和 jQuery (如果使用) -->
<!-- Bootstrap 5 主要依赖 Popper.js,不再强制依赖 jQuery -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
关键点:
<meta name="viewport" ...>:这个标签是响应式设计的基石,它告诉浏览器如何控制页面的尺寸和缩放,没有它,响应式设计将无法正常工作。
步骤 2:使用响应式栅格系统
栅格系统是 Bootstrap 的核心,它将页面划分为 12 列。
工作原理:
- 容器:
.container或.container-fluid是栅格系统的外层包裹元素。.container:响应式布局,在不同屏幕尺寸下有固定的最大宽度。.container-fluid:100% 宽度,占据整个视口。
- 行:
.row用于放置列,并清除列的浮动。 - 列:
.col或.col-*是实际的内容容器。 代表 1-12 之间的数字。
响应式断点: Bootstrap 提供了五个默认的断点,用于在不同屏幕尺寸下应用不同的样式。

| 断点 | 类前缀 | 屏幕尺寸 | 设备类型 |
|---|---|---|---|
| Extra small | <576px |
手机 | |
| Small | sm: |
≥576px |
手机 |
| Medium | md: |
≥768px |
平板 |
| Large | lg: |
≥992px |
笔记本/桌面 |
| Extra large | xl: |
≥1200px |
大屏桌面 |
| XX-Large | xxl: |
≥1400px |
超大屏桌面 |
示例:一个典型的三栏布局
<div class="container mt-5">
<div class="row">
<!--
在小屏幕上,这列占满 12 列。
在中等屏幕及以上,它占据 4 列 (12/3)。
-->
<div class="col-12 col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">第一栏</h5>
<p class="card-text">这是第一栏的内容,在小屏幕上会占据整行,在平板和桌面屏幕上会变窄。</p>
</div>
</div>
</div>
<div class="col-12 col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">第二栏</h5>
<p class="card-text">这是第二栏的内容,行为与第一栏相同。</p>
</div>
</div>
</div>
<div class="col-12 col-md-4">
<div class="card">
<div class="card-body">
<h5 class="card-title">第三栏</h5>
<p class="card-text">这是第三栏的内容,行为与第一栏相同。</p>
</div>
</div>
</div>
</div>
</div>
解释:
col-12:默认情况下,在所有屏幕尺寸上,每个卡片都占满 12 列(即独占一行)。col-md-4:当屏幕宽度达到md断点(768px)及以上时,每个卡片只占据 4 列,因为有 3 个.col-md-4,所以它们会并排显示在一行(4+4+4=12)。
步骤 3:创建响应式导航栏
导航栏是响应式设计中最重要的部分之一,Bootstrap 的 navbar 组件可以完美实现。
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<a class="navbar-brand" href="#">我的网站</a>
<!--
这个按钮在屏幕小的时候出现,用于触发菜单的展开/收起。
"navbar-toggler" 类提供了默认样式。
-->
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
<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" aria-current="page" 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>
工作原理:
navbar-expand-lg:这个类表示在lg(大屏)断点以上,导航栏是水平展开的,在小于lg的屏幕上,导航项会折叠进汉堡菜单按钮里。navbar-toggler:这是“汉堡菜单”按钮。data-bs-toggle="collapse"和data-bs-target="#navbarNav":这是 Bootstrap 的 JavaScript 属性,告诉按钮点击时要切换哪个元素的显示状态。#navbarNav对应下面div的id。collapse navbar-collapse:这个div包含了导航链接,默认是折叠的,当被按钮触发时,它会展开。
步骤 4:使用组件和图片
轮播图
<div id="myCarousel" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-indicators">
<button type="button" data-bs-target="# 