1. 什么是 Bootstrap? - 核心优势简介
  2. 快速上手 - 如何在你的项目中引入 Bootstrap
  3. 核心概念 - 网格系统、组件、工具类
  4. 实战:构建一个完整的静态网页 - 一个详细的步骤-by-步骤示例
  5. 进阶与总结

什么是 Bootstrap?

Bootstrap 是一个开源的前端工具包,由 Twitter 的设计师和开发者 Mark Otto 和 Jacob Thornton 开发,它的核心目标是:

bootstrap静态网页
(图片来源网络,侵删)
  • 快速开发:提供了一套预定义的 CSS 和 JavaScript 组件,让你可以直接“复制粘贴”来构建页面布局和功能。
  • 响应式设计:内置的网格系统和组件都是移动优先的,可以完美适配从手机、平板到桌面电脑等各种屏幕尺寸。
  • 一致性和美观性:提供了一套统一的设计语言和主题,确保你的网站看起来专业且协调。
  • 丰富的组件:包含了导航栏、按钮、模态框、轮播图、表单等数十种常用组件,开箱即用。

快速上手

在开始编写代码之前,你需要将 Bootstrap 引入到你的 HTML 项目中,有三种主要方式:

使用 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">
</head>
<body>
    <!-- 你的页面内容 -->
    <!-- 2. 引入 Bootstrap 的 JavaScript (需要 Popper.js) -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

注意viewport meta 标签对于响应式设计至关重要,请务必包含。

下载文件

Bootstrap 官网 下载源文件,然后将 cssjs 文件夹放在你的项目目录中,再通过相对路径引入。

bootstrap静态网页
(图片来源网络,侵删)
<link rel="stylesheet" href="path/to/bootstrap.min.css">
<script src="path/to/bootstrap.bundle.min.js"></script>

使用包管理器 (npm/yarn)

如果你在使用现代前端构建工具(如 Vite, Webpack, Create React App),可以通过 npm 或 yarn 安装。

npm install bootstrap

然后在你的主入口文件(如 main.jsindex.js)中导入:

import 'bootstrap/dist/css/bootstrap.min.css';
// 如果你需要使用 Bootstrap 的 JS 组件
import 'bootstrap/dist/js/bootstrap.bundle.min.js';

核心概念

理解了如何引入 Bootstrap 后,我们来看看它的三个核心部分。

a) 网格系统

网格系统是 Bootstrap 的灵魂,它是一个强大的布局系统,它将页面划分为 12 列的网格,你可以通过组合这些列来创建各种复杂的布局。

bootstrap静态网页
(图片来源网络,侵删)

核心结构

  • 容器.container.container-fluid.container 是有固定宽度的居中容器,.container-fluid 则是 100% 宽度的全屏容器。
  • .row,用于放置列,并清除列的浮动。
  • .col, .col-4, .col-md-6 等,列必须放在 .row 中。

示例: 下面是一个典型的三栏布局,在中等屏幕(md)上各占 4 列,在小屏幕(sm)上各占 12 列(即堆叠显示)。

<div class="container">
  <div class="row">
    <div class="col-md-4">
      <h2>栏目一</h2>
      <p>这是第一栏的内容。</p>
    </div>
    <div class="col-md-4">
      <h2>栏目二</h2>
      <p>这是第二栏的内容。</p>
    </div>
    <div class="col-md-4">
      <h2>栏目三</h2>
      <p>这是第三栏的内容。</p>
    </div>
  </div>
</div>

col-md-4 的意思是:在 medium (≥768px) 及以上屏幕尺寸下,该列占 4/12 的宽度。

b) 组件

Bootstrap 提供了大量预构建的、可复用的组件,如导航栏、按钮、卡片、模态框等,你只需要添加相应的 HTML 类名即可。

示例:一个简单的导航栏

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
  <div class="container-fluid">
    <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">
        <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>
      </ul>
    </div>
  </div>
</nav>

c) 工具类

工具类是单个的 CSS 类,用于快速应用特定的样式,如设置外边距、内边距、文本对齐、颜色等。

示例

  • m-3:设置所有方向的外边距。
  • mt-5:设置顶部的大外边距。
  • text-center:文本居中。
  • d-flex:设置为弹性布局。
  • justify-content-between:在 flex 容器中,项目之间均匀分布。
<div class="d-flex justify-content-between align-items-center p-3 bg-light">
  <span class="fw-bold">Logo</span>
  <span class="text-muted">用户名</span>
</div>

实战:构建一个完整的静态网页

我们用 Bootstrap 来创建一个包含导航栏、轮播图、特色卡片、页脚的完整静态网页。

最终效果预览

完整代码:你可以直接复制以下代码到一个 .html 文件中,然后用浏览器打开查看效果。

<!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">
    <!-- 可选:添加自定义样式 -->
    <style>
        .carousel-item {
            height: 400px; /* 设置轮播图高度 */
        }
        .carousel-item img {
            object-fit: cover; /* 使图片覆盖整个区域 */
            height: 100%;
        }
        .feature-card {
            transition: transform 0.3s ease;
        }
        .feature-card:hover {
            transform: translateY(-10px);
        }
    </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" 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>
    <!-- 轮播图 -->
    <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"></button>
            <button type="button" data-bs-target="#myCarousel" data-bs-slide-to="1"></button>
            <button type="button" data-bs-target="#myCarousel" data-bs-slide-to="2"></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="...">
                <div class="carousel-caption d-none d-md-block">
                    <h5>欢迎来到我的网站</h5>
                    <p>这是一个由 Bootstrap 构建的精美静态网页。</p>
                </div>
            </div>
            <div class="carousel-item">
                <img src="https://picsum.photos/seed/slide2/1200/400" class="d-block w-100" alt="...">
                <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="...">
                <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"></span>
        </button>
        <button class="carousel-control-next" type="button" data-bs-target="#myCarousel" data-bs-slide="next">
            <span class="carousel-control-next-icon"></span>
        </button>
    </div>
    <!-- 主要内容区域 -->
    <div class="container my-5">
        <div class="row text-center mb-4">
            <div class="col">
                <h2>我们的特色</h2>
                <p class="lead">我们致力于为您提供最优质的服务和体验。</p>
            </div>
        </div>
        <div class="row">
            <div class="col-md-4 mb-4">
                <div class="card feature-card h-100">
                    <img src="https://picsum.photos/seed/feature1/400/300" class="card-img-top" alt="特色图片1">
                    <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 mb-4">
                <div class="card feature-card h-100">
                    <img src="https://picsum.photos/seed/feature2/400/300" class="card-img-top" alt="特色图片2">
                    <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 mb-4">
                <div class="card feature-card h-100">
                    <img src="https://picsum.photos/seed/feature3/400/300" class="card-img-top" alt="特色图片3">
                    <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>
    </div>
    <!-- 页脚 -->
    <footer class="bg-dark text-white py-4">
        <div class="container">
            <div class="row">
                <div class="col-md-6">
                    <h5>关于我们</h5>
                    <p>这是一个使用 Bootstrap 5 构建的静态网页示例。</p>
                </div>
                <div class="col-md-6">
                    <h5>联系方式</h5>
                    <p>邮箱: contact@example.com</p>
                    <p>电话: +86 123 4567 8900</p>
                </div>
            </div>
            <hr class="my-4 bg-white">
            <div class="text-center">
                <p>&copy; 2025 我的网站. 保留所有权利。</p>
            </div>
        </div>
    </footer>
    <!-- 2. 引入 Bootstrap 的 JavaScript -->
    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
</body>
</html>

代码解析

  • 导航栏:使用了 navbar, navbar-expand-lg, navbar-dark, bg-dark 等类。sticky-top 让导航栏在滚动时保持在顶部。
  • 轮播图:核心是 carousel 类。carousel-inner 包含轮播项 carousel-itemcarousel-caption 用于添加文字说明。
  • 卡片card 是一个灵活的容器,card-img-top 是顶部图片,card-body 包含内容,card-titlecard-text 是标题和文本。
  • 自定义样式:在 <style> 标签中,我们添加了一些简单的 CSS 来增强轮播图高度和卡片悬停效果,这证明了 Bootstrap 可以与自定义 CSS 无缝结合。
  • 页脚:使用 bg-darktext-white 快速设置深色背景和白色文字。

进阶与总结

  • 定制化:如果你不想使用 Bootstrap 的默认样式(如颜色、字体),可以使用官方的 Customizer 工具来构建一个只包含你需要的组件和样式的定制版本。
  • 文档是你的朋友:Bootstrap 的官方文档非常详尽,是学习和查找组件用法的最佳资源,几乎每个组件都有详细的说明、示例和代码片段。
  • 结合 JavaScript 框架:Bootstrap 可以与 React、Vue、Angular 等现代前端框架结合使用,你只需要引入 CSS 文件,并用框架的方式来使用组件(使用 React 组件库 react-bootstrap)。

使用 Bootstrap 创建静态网页是一个非常高效的选择,它将你从繁琐的 CSS 布局和样式调整中解放出来,让你能够专注于页面的内容和功能,通过掌握其网格系统、组件和工具类,你可以在短时间内构建出专业级的响应式网站。