目录
-
第一部分:Bootstrap 核心概念
(图片来源网络,侵删)- 什么是 Bootstrap?
- Bootstrap 的核心优势
- Bootstrap 的工作原理(栅格系统、组件、JS插件)
-
第二部分:环境准备与项目搭建
- 使用 CDN(最简单,适合新手和快速原型)
- 下载并引入本地文件(适合生产环境)
- 使用 Vite/Webpack 等构建工具(现代前端项目推荐)
-
第三部分:开发一个完整网站(实战步骤)
- 步骤 1:创建项目基础结构(HTML骨架)
- 步骤 2:构建响应式导航栏
- 步骤 3:设计主轮播图/英雄区域
- 步骤 4:使用栅格系统布局内容区块
- 步骤 5:添加各种组件(卡片、按钮、模态框等)
- 步骤 6:编写自定义 CSS 进行样式微调
- 步骤 7:添加交互效果(JavaScript 插件)
-
第四部分:最佳实践与进阶技巧
- 响应式断点
- 容器
- 实用类
- 组件定制与主题定制
- 可访问性
第一部分:Bootstrap 核心概念
什么是 Bootstrap?
Bootstrap 是由 Twitter 开发并开源的一个 CSS 框架,它提供了一套预定义的 CSS 类和 JavaScript 插件,让你可以快速构建美观、功能齐全且响应式的网站,而无需从零开始编写大量的 CSS 和 JavaScript。

Bootstrap 的核心优势
- 响应式设计:内置强大的栅格系统,能自动适配手机、平板、桌面等各种屏幕尺寸。
- 组件丰富:提供了大量现成的 UI 组件,如导航栏、按钮、轮播图、模态框、下拉菜单等,开箱即用。
- 高定制性:通过 Sass 变量和 Mixin,可以轻松修改 Bootstrap 的默认样式,打造符合品牌风格的定制主题。
- 浏览器兼容性好:兼容所有主流的现代浏览器,减少了跨浏览器兼容的烦恼。
- 文档完善:拥有极其详尽的官方文档,是学习和解决问题的最佳资源。
Bootstrap 的工作原理
- 栅格系统:Bootstrap 的核心,它将页面划分为 12 列的布局,通过
.container(容器)和.row(行)以及.col-*(列)类来组合,实现灵活的响应式布局。 - 组件:由 HTML 结构、CSS 样式和(可选的)JavaScript 行为组成,一个导航栏不仅需要样式来美化,还需要 JS 来实现折叠/展开功能。
- JS 插件:通过 Bootstrap 提供的 JS 文件(或单独引入的插件 JS 文件)来启用交互功能,如轮播、工具提示、弹出框等。
第二部分:环境准备与项目搭建
选择哪种方式引入 Bootstrap,取决于你的项目需求。
使用 CDN(最简单)
这是最快开始的方式,只需在 HTML 文件中通过 <link> 和 <script> 标签引入即可。注意:JS 通常放在 </body> 标签前,以确保 DOM 加载完成。
<!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.1/font/bootstrap-icons.css">
</head>
<body>
<!-- 你的网站内容 -->
<!-- 2. 引入 Bootstrap JS (包括 Popper.js) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>
下载并引入本地文件
这种方式更稳定,适合生产环境,因为不依赖外部网络。
- 下载:访问 Bootstrap 官网,下载 "Compiled CSS and JS" 版本。
- 解压:你会得到
css/,js/,fonts/(或icons/) 等文件夹。 - 引入:将文件放在你的项目目录中,然后像下面这样引入。
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">我的 Bootstrap 网站</title>
<!-- 引入本地 Bootstrap CSS -->
<link href="path/to/your/bootstrap.min.css" rel="stylesheet">
</head>
<body>
<!-- 你的网站内容 -->
<!-- 引入本地 Popper.js 和 Bootstrap JS -->
<script src="path/to/your/popper.min.js"></script>
<script src="path/to/your/bootstrap.min.js"></script>
</body>
</html>
使用构建工具(Vite/Webpack)
这是现代前端开发的标准流程,你可以使用官方的 bootstrap npm 包,并通过 Sass 文件进行深度定制。

- 初始化项目:
npm create vite@latest my-bootstrap-app -- --template vanilla - 安装依赖:
cd my-bootstrap-app npm install bootstrap @popperjs/core npm install -D sass
- 引入:
- 在你的主 CSS 文件(如
src/style.scss)中引入 Bootstrap 的 Sass 文件:@import "bootstrap";
- 在你的主 JS 文件(如
src/main.js)中引入 Bootstrap 的 JS 文件:import 'bootstrap';
- 在你的主 CSS 文件(如
第三部分:开发一个完整网站(实战步骤)
我们将创建一个包含导航、轮播图、特色内容、页脚的简单企业官网。
步骤 1:创建项目基础结构
使用 CDN 方式,创建一个 index.html 文件,并引入 Bootstrap。
步骤 2:构建响应式导航栏
导航栏是网站的门面,Bootstrap 的 .navbar 组件非常强大。
<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" 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 ms-auto">
<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:在大屏幕上展开,小屏幕上折叠。container居中并添加内边距。navbar-toggler:折叠按钮,data-bs-target指向要折叠/展开的元素 ID。
步骤 3:设计主轮播图/英雄区域
轮播图非常适合展示重要信息,使用 .carousel 组件。
<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" aria-current="true" aria-label="Slide 1"></button>
<button type="button" data-bs-target="#heroCarousel" data-bs-slide-to="1" aria-label="Slide 2"></button>
<button type="button" data-bs-target="#heroCarousel" data-bs-slide-to="2" aria-label="Slide 3 