Bootstrap 实例教程:从零开始构建响应式网站
目录
- 第一部分:Bootstrap 是什么?为什么要用它?
- 第二部分:准备工作 - 如何引入 Bootstrap?
- 第三部分:核心概念 - 布局与栅格系统
- 1 容器
- 2 栅格系统详解
- 第四部分:常用组件实例 - 快速构建UI
- 1 导航栏
- 2 轮播图
- 3 卡片
- 4 模态框
- 5 表单与输入框
- 第五部分:实战项目 - 构建一个简单的个人作品集网站
- 第六部分:进阶技巧与资源
第一部分:Bootstrap 是什么?为什么要用它?
Bootstrap 是一个由 Twitter 开发的、全球最流行的前端开源工具库,它提供了一套基于 HTML、CSS 和 JavaScript 的设计模板和组件,帮助开发者快速构建美观、响应式且功能完善的网站。

核心优势:
- 快速开发: 无需从零开始写样式,直接使用现成的组件和工具类,极大提高开发效率。
- 响应式设计: 默认支持移动优先,一套代码可以完美适配桌面、平板和手机等各种设备。
- 跨浏览器兼容: 处理了不同浏览器之间的兼容性问题,让你更专注于业务逻辑。
- 设计一致性: 提供统一的设计语言和视觉风格,让网站看起来更专业、更规范。
- 丰富的组件: 包含了导航栏、轮播图、模态框、下拉菜单等大量常用组件。
第二部分:准备工作 - 如何引入 Bootstrap?
有三种主要方式可以在你的项目中使用 Bootstrap:
- CDN 链接 (最简单,适合初学者和测试)
- 下载文件 (适合离线开发或生产环境)
- 包管理器 (适合现代前端项目)
对于初学者,我们强烈推荐使用 CDN 方式,因为它最简单,无需任何配置。
CDN 方式示例:

在你的 HTML 文件的 <head> 标签内,引入 Bootstrap 的 CSS 和 JavaScript 文件。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">我的第一个 Bootstrap 页面</title>
<!-- 1. 引入 Bootstrap 的 CSS 文件 -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<!-- 可选:引入 Bootstrap 的 Icons 图标库 -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.2/font/bootstrap-icons.min.css">
</head>
<body>
<!-- 你的页面内容将放在这里 -->
<!-- 2. 引入 Bootstrap 的 JavaScript 文件 (需要 Popper.js 依赖) -->
<!-- 注意:通常放在 body 结束标签前,以确保页面元素已加载 -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
重要提示: 为了让 Bootstrap 的移动端特性正常工作,必须在
<head>中设置viewport元素。
第三部分:核心概念 - 布局与栅格系统
Bootstrap 的灵魂在于其 12 列响应式栅格系统,理解了它,你就掌握了 Bootstrap 布局的精髓。
1 容器
栅格系统需要放置在容器中,Bootstrap 提供了两种容器:
.container: 宽度是响应式的,在小屏幕上全宽,在大屏幕上固定宽度并居中。.container-fluid: 宽度始终是 100%,占据整个视口宽度。
<div class="container"> <h1>我是一个固定宽度的容器</h1> <p>在小屏幕上宽度是100%,在中等屏幕以上宽度固定并居中。</p> </div> <hr> <div class="container-fluid"> <h1>我是一个全宽度的容器</h1> <p>宽度始终是100%,占满整个屏幕。</p> </div>
2 栅格系统详解
栅格系统由行和列组成。
- 行: 使用
.row类来创建一个行,它会自动处理列的清除和负边距,确保列之间有合适的间距。 - 列: 使用
.col-*类来创建列。 可以是一个数字(1-12),代表该列占用的份数。
基本结构:
<div class="container">
<div class="row">
<div class="col">列 1</div>
<div class="col">列 2</div>
<div class="col">列 3</div>
</div>
</div>
示例1:等分三列
col 不带数字时,会自动将一行中的所有列等分。
<div class="container">
<div class="row">
<div class="col bg-light border p-3">1/3 宽度</div>
<div class="col bg-light border p-3">1/3 宽度</div>
<div class="col bg-light border p-3">1/3 宽度</div>
</div>
</div>
示例2:指定宽度
总份数为12,下面示例中,第一列占4份,第二列占8份。
<div class="container">
<div class="row">
<div class="col-4 bg-secondary text-white p-3">4/12 宽度</div>
<div class="col-8 bg-info text-white p-3">8/12 宽度</div>
</div>
</div>
示例3:响应式布局 (核心!)
你可以为不同屏幕尺寸指定不同的列宽,格式为 .col-{breakpoint}-{number}。
xs(Extra small, <576px)sm(Small, ≥576px)md(Medium, ≥768px)lg(Large, ≥992px)xl(Extra large, ≥1200px)xxl(Extra extra large, ≥1400px)
场景: 在小屏幕上(手机),内容垂直堆叠;在中等屏幕以上(平板、桌面),内容水平排列。
<div class="container">
<h2>响应式布局示例</h2>
<p>在手机上,这两列会上下堆叠,在平板或电脑上,它们会左右排列。</p>
<div class="row">
<!-- 默认 (xs) 垂直堆叠,在 md 及以上屏幕水平排列,各占一半 -->
<div class="col-12 col-md-6 bg-primary text-white p-3">左侧内容</div>
<div class="col-12 col-md-6 bg-success text-white p-3">右侧内容</div>
</div>
</div>
第四部分:常用组件实例 - 快速构建UI
Bootstrap 提供了大量开箱即用的组件。
1 导航栏
导航栏是网站的骨架,Bootstrap 的 .navbar 组件非常强大。
<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
<div class="container-fluid">
<!-- 品牌/Logo -->
<a class="navbar-brand" href="#">我的网站</a>
<!-- 用于折叠的按钮 -->
<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="#">lt;/a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">服务</a>
</li>
<li class="nav-item">
<a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">联系我们</a>
</li>
</ul>
</div>
</div>
</nav>
2 轮播图
轮播图非常适合展示图片或重要信息。
<div id="myCarousel" class="carousel slide" data-bs-ride="carousel">
<!-- 轮播指标 -->
<div class="carousel-indicators">
<button type="button" data-bs-target="#myCarousel" data-bs-slide-to="0" class="active" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#myCarousel" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#myCarousel" data-bs-slide-to="2" aria-label="Slide 3"></button>
</div>
<!-- 轮播项目 -->
<div class="carousel-inner">
<div class="carousel-item active">
<img src="https://picsum.photos/seed/slide1/1200/400" class="d-block w-100" alt="Slide 1">
<div class="carousel-caption d-none d-md-block">
<h5>第一张幻灯片</h5>
<p>一些说明文字。</p>
</div>
</div>
<div class="carousel-item">
<img src="https://picsum.photos/seed/slide2/1200/400" class="d-block w-100" alt="Slide 2">
<div class="carousel-caption d-none d-md-block">
<h5>第二张幻灯片</h5>
<p>更多说明文字。</p>
</div>
</div>
<div class="carousel-item">
<img src="https://picsum.photos/seed/slide3/1200/400" class="d-block w-100" alt="Slide 3">
<div class="carousel-caption d-none d-md-block">
<h5>第三张幻灯片</h5>
<p>最后的说明文字。</p>
</div>
</div>
</div>
<!-- 轮播控制按钮 -->
<button class="carousel-control-prev" type="button" data-bs-target="#myCarousel" data-bs-slide="prev">
<span class="carousel-control-prev-icon" aria-hidden="true"></span>
<span class="visually-hidden">Previous</span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#myCarousel" data-bs-slide="next">
<span class="carousel-control-next-icon" aria-hidden="true"></span>
<span class="visually-hidden">Next</span>
</button>
</div>
3 卡片
卡片是一个灵活的、可扩展的内容容器。
<div class="container">
<div class="row">
<div class="col-md-4">
<div class="card" style="width: 18rem;">
<img src="https://picsum.photos/seed/card1/300/200" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">卡片标题</h5>
<p class="card-text">这是一张示例卡片,展示了一些文本内容。</p>
<a href="#" class="btn btn-primary">了解更多</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card" style="width: 18rem;">
<img src="https://picsum.photos/seed/card2/300/200" class="card-img-top" alt="...">
<div class="card-body">
<h5 class="card-title">另一个卡片</h5>
<p class="card-text">这是另一张卡片,同样可以包含各种元素。</p>
<a href="#" class="btn btn-success">点击这里</a>
</div>
</div>
</div>
<div class="col-md-4">
<div class="card bg-warning text-dark" style="width: 18rem;">
<div class="card-body">
<h5 class="card-title">无图片卡片</h5>
<p class="card-text">卡片也可以没有图片,只包含文本和按钮。</p>
<a href="#" class="btn btn-dark">操作按钮</a>
</div>
</div>
</div>
</div>
</div>
4 模态框
模态框是一个对话框/弹出窗口,用于显示额外的信息或表单。
触发按钮:
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal"> 打开模态框 </button>
模态框 HTML 结构:
<!-- 模态框 -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">模态框标题</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
</div>
<div class="modal-body">
这里是模态框的内容,你可以放任何东西。
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary">保存更改</button>
</div>
</div>
</div>
</div>
5 表单与输入框
Bootstrap 能让原生表单元素变得美观。
<div class="container">
<form>
<div class="mb-3">
<label for="exampleInputEmail1" class="form-label">邮箱地址</label>
<input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
<div id="emailHelp" class="form-text">我们绝不会将你的邮箱分享给任何人。</div>
</div>
<div class="mb-3">
<label for="exampleInputPassword1" class="form-label">密码</label>
<input type="password" class="form-control" id="exampleInputPassword1">
</div>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input" id="exampleCheck1">
<label class="form-check-label" for="exampleCheck1">记住我</label>
</div>
<button type="submit" class="btn btn-primary">提交</button>
</form>
</div>
第五部分:实战项目 - 构建一个简单的个人作品集网站
让我们把学到的知识组合起来,创建一个简单的单页网站。
最终效果:
- 顶部一个响应式导航栏。
- 一个欢迎轮播图。
- 一个关于我的简介卡片。
- 一个展示项目技能的网格。
完整代码 (index.html):
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">张三的个人作品集</title>
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.2/font/bootstrap-icons.min.css">
<style>
/* 自定义一些样式 */
.carousel-item img {
object-fit: cover;
height: 400px;
}
.card-img-top {
height: 200px;
object-fit: cover;
}
footer {
margin-top: 50px;
}
</style>
</head>
<body>
<!-- 导航栏 -->
<nav class="navbar navbar-expand-lg navbar-dark bg-dark sticky-top">
<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="#home">首页</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#about">关于我</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#skills">技能</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#contact">联系</a>
</li>
</ul>
</div>
</div>
</nav>
<main>
<!-- 轮播图部分 -->
<section id="home">
<div id="heroCarousel" class="carousel slide" data-bs-ride="carousel">
<div class="carousel-indicators">
<button type="button" data-bs-target="#heroCarousel" data-bs-slide-to="0" class="active"></button>
<button type="button" data-bs-target="#heroCarousel" data-bs-slide-to="1"></button>
<button type="button" data-bs-target="#heroCarousel" data-bs-slide-to="2"></button>
</div>
<div class="carousel-inner">
<div class="carousel-item active">
<img src="https://picsum.photos/seed/hero1/1200/400" class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h1>你好,我是张三</h1>
<p>一名充满激情的前端开发者</p>
</div>
</div>
<div class="carousel-item">
<img src="https://picsum.photos/seed/hero2/1200/400" class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h1>专注于用户体验</h1>
<p>创造美观且实用的网站</p>
</div>
</div>
<div class="carousel-item">
<img src="https://picsum.photos/seed/hero3/1200/400" class="d-block w-100" alt="...">
<div class="carousel-caption d-none d-md-block">
<h1>欢迎来到我的世界</h1>
<p>让我们一起探索更多可能</p>
</div>
</div>
</div>
<button class="carousel-control-prev" type="button" data-bs-target="#heroCarousel" data-bs-slide="prev">
<span class="carousel-control-prev-icon"></span>
</button>
<button class="carousel-control-next" type="button" data-bs-target="#heroCarousel" data-bs-slide="next">
<span class="carousel-control-next-icon"></span>
</button>
</div>
</section>
<!-- 关于我部分 -->
<section id="about" class="container my-5">
<h2 class="text-center mb-4">关于我</h2>
<div class="row">
<div class="col-md-8">
<p>你好!我是一名热爱编程和设计的前端开发工程师,拥有超过5年的行业经验,专注于使用现代Web技术(如 HTML5, CSS3, JavaScript, React, Vue)构建高性能、用户友好的网站和Web应用程序。</p>
<p>我相信优秀的设计和流畅的用户体验是产品成功的关键,我不仅在技术上追求卓越,也注重细节,力求为用户带来最佳的交互感受。</p>
</div>
<div class="col-md-4">
<img src="https://picsum.photos/seed/avatar/300/300" class="img-fluid rounded-circle" alt="张三的头像">
</div>
</div>
</section>
<!-- 技能部分 -->
<section id="skills" class="bg-light py-5">
<div class="container">
<h2 class="text-center mb-4">我的技能</h2>
<div class="row">
<div class="col-md-4 mb-4">
<div class="card h-100">
<div class="card-body text-center">
<i class="bi bi-code-slash display-1 text-primary"></i>
<h5 class="card-title mt-3">前端开发</h5>
<p class="card-text">精通 HTML5, CSS3, JavaScript (ES6+), 熟练使用 Bootstrap, Tailwind CSS, React, Vue.js 等主流框架和库。</p>
</div>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="card h-100">
<div class="card-body text-center">
<i class="bi bi-palette display-1 text-success"></i>
<h5 class="card-title mt-3">UI/UX 设计</h5>
<p class="card-text">具备良好的审美和设计感,能够使用 Figma, Sketch 等工具进行原型设计和交互设计。</p>
</div>
</div>
</div>
<div class="col-md-4 mb-4">
<div class="card h-100">
<div class="card-body text-center">
<i class="bi bi-gear display-1 text-info"></i>
<h5 class="card-title mt-3">工具与协作</h5>
<p class="card-text">熟练使用 Git 进行版本控制,了解 CI/CD 流程,有良好的团队协作和沟通能力。</p>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
<!-- 页脚 -->
<footer class="bg-dark text-white text-center py-3">
<div class="container">
<p>© 2025 张三的作品集. All rights reserved. | 使用 Bootstrap 构建</p>
</div>
</footer>
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
第六部分:进阶技巧与资源
- 自定义 Bootstrap: 如果你不想使用默认的 Bootstrap 主题,可以通过 Sass 变量 进行深度定制,修改颜色、字体、间距等。
- 组件定制: 大部分组件都提供了配置选项,例如轮播图的自动播放间隔、模态框的背景点击关闭等,查阅官方文档了解详情。
- 官方文档是你的圣经: Bootstrap 官方文档 是最权威、最全面的参考资料,几乎所有问题都能在那里找到答案。
- 更多资源:
- Bootstrap Icons: 官方图标库,方便易用。
- Bootswatch: Bootstrap 主题库,提供大量现成的精美主题,一键替换即可改变网站风格。
希望这份详尽的教程能帮助你顺利入门 Bootstrap!动手实践是最好的学习方式,尝试修改代码,创建你自己的页面吧!
