扫码加入

  • 正文
  • 相关推荐
申请入驻 产业图谱

Bootstrap5:看这一篇就够了

2小时前
241
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

在日新月异的前端世界中,Bootstrap 始终像一位默默陪伴的老友,为无数开发者简化了从构思到实现的路径。自 2011 年诞生以来,它用直观的栅格系统和丰富的组件库,让响应式设计不再是少数人的专长。如今 ​​Bootstrap 5​​ 的发布,既是框架的自我革新,也为我们打开了一扇重新认识现代 Web 开发的大门。由于前端技术的高速发展, ​​Bootstrap 5​​并不算是非常好的选择,但是,它的轻量、易用、兼容等特点,对我来说,确实是个合适的选择。

一、环境搭建

1、编辑器选择

(1)cursor是个不错的选择,AI加持,学习起来更容易(收费)。

cursor:看这一篇就够了_cursor pycharm-CSDN博客

(2)类似cursor,有免费的替代,也是AI加持,如trae,国产也很强。

Trae - AI 原生 IDE

2、AI辅助学习

(1)腾讯元宝是个不错的选择,使用满血Deepseek,学习起来爽歪歪。

(2)还有其他AI模型可以选择,如豆包、智谱清言等。

3、前端环境

(1)创建空文件夹

(2)通过cursor选择该空文件夹

(3)通过cursor搭建bootstrap环境

(4)运行环境

如下所示,经过cursor的引导,很快就创建了环境。

4、npm run dev

前端服务配置

{  "name": "bootstrap5-project",  "version": "1.0.0",  "description": "Bootstrap 5 project",  "type": "module",  "main": "index.js",  "scripts": {    "dev": "vite",    "build": "vite build",    "preview": "vite preview"  },  "dependencies": {    "bootstrap": "^5.3.2",    "@popperjs/core": "^2.11.8",    "jquery": "^3.7.1"  },  "devDependencies": {    "vite": "^5.0.12"  }} 

从配置中看,前端服务器使用了vite来构建。 - 当运行 `npm run dev` 时,实际上执行的是 `vite` 命令(根据 package.json 中的配置) - Vite 会启动一个开发服务器,默认端口通常是 3000 或 5173 - Bootstrap 5.3.2(UI 框架) - Popper.js 2.11.8(Bootstrap 的依赖,用于弹出组件) - jQuery 3.7.1 - Vite 5.0.12(开发服务器和构建工具) - Vite 会监听项目文件的变化 - 当修改 HTML、CSS 或 JavaScript 文件时,浏览器会自动刷新或热更新 - 比如修改 index.html 中的内容,变化会立即反映在浏览器中 - Vite 会自动处理项目中的静态资源 - Bootstrap CSS 和 JS 文件会被正确地引入和处理 - 当前项目中的 Bootstrap 资源引用:

  ```html  <link href="/node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">  <script src="/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>  ```

- 在开发模式下,Vite 会自动处理这些 node_modules 中的资源引用 - Vite 提供了非常快速的冷启动速度 - 支持模块热替换(HMR) - 提供友好的错误提示和调试信息 - 在 index.html 中添加的调试代码也会实时生效:

  ```javascript  document.getElementById('testButton').addEventListener('click', () => {    const debugOutput = document.getElementById('debugOutput');    debugOutput.innerHTML = `<div >Button clicked at ${new Date().toLocaleTimeString()}</div>`;    console.log('Button clicked!');  });  ```

因此,前端开发流程可以这么看: (1)运行 `npm run dev` 启动开发服务器 (2)在浏览器中打开提供的本地开发 URL(通常是 http://localhost:3000) (3)编辑项目文件,变更会自动反映在浏览器中 (4)可以使用浏览器开发工具查看控制台输出和调试信息

那么,问题来了,vite是什么?我必须使用viete么?比如,为什么django的模板引擎没看到使用vite? 答案显而易见,vite并不是必须的,其他构建工具同样可以。我们把重点放到bootstrap5上面,不用去想vite的事情,因为bootstrap5不依赖vite,甚至配置文件中jQuery工具都可以不用,我们就用原生JS。

二、初识bootstrap5

1、一段bootstrap5代码

<!-- 典型响应式布局示例 --><div >  <div >    <div >      <div >        <img src="..." >        <div >          <h5 >响应式卡片</h5>        </div>      </div>    </div>  </div></div>

这么看的话,很难看得懂这些代码的意思,能起到什么作用,但可以配合官方文档使用:

开始使用 Bootstrap · Bootstrap v5.3 (sbox.cn)

如何简单记一下这些代码呢?其实用多了才行,还得不断去查阅文档。不只是bootstrap需要这么做,VUE这些框架也是类似的。那么,我们可以通过以下策略去整体学习一下bootstrap5.

(1)分类记忆

1. 布局系统   - 容器: `.container` `.container-fluid`   - 网格: `.row` > `.col-*` `.col-sm-*`   - 间距: `g-*` `gy-*` `gx-*`    - 对齐: `align-items-*` `justify-content-*`2. 通用组件   - 导航: `.nav` `.navbar` `.dropdown`   - 卡片: `.card` `.card-body` `.card-img-top`   - 表单: `.form-control` `.form-select` `.form-check`3. 实用工具类   - 边距: `m-*` `mt-*` `mb-*`   - 颜色: `text-primary` `bg-danger`   - 显示: `d-none` `d-md-block`

(2)专注学习高频组件

<!-- Top 5高频组件模板 --><!-- 导航栏 --><nav >  <div >    <a  href="#">Logo</a>    <button  data-bs-toggle="collapse" data-bs-target="#navMenu">      <span ></span>    </button>    <div  id="navMenu">      <ul >        <li ><a  href="#">Home</a></li>      </ul>    </div>  </div></nav><!-- 卡片组件 --><div  >  <img src="..." >  <div >    <h5 >Card Title</h5>    <p >Some quick example text.</p>    <a href="#" >Go somewhere</a>  </div></div><!-- 表单验证 --><div >  <label >Email address</label>  <input type="email" >  <div >Invalid email format</div></div>

(3)记忆口诀

/* 边距工具速记 */m = margin      // 例如: m-3p = padding     // 例如: pt-2t = top         // 例如: mt-4b = bottom      // 例如: pb-3s = start(left) // 例如: ms-autoe = end(right)  // 例如: me-2x = 水平轴      // 例如: px-5y = 垂直轴      // 例如: my-0/* 响应式断点 */sm ≥576px       // 例如: col-sm-6md ≥768px       // 例如: d-md-nonelg ≥992px       // 例如: text-lg-startxl ≥1200px      // 例如: shadow-xlxxl ≥1400px     // 例如: w-xxl-50

(4)系统学习

(5)辅助记忆

特别是使用ai编辑器,学起来挺轻松的。

(6)刻意练习

如有时间就看看文档,甚至有计划去看一些组件,最好还是不断编程,熟能生巧。

(7)长期记忆

看源码。。。

2、官方文档

(1)速查表

Cheatsheet · Bootstrap v5.3 (getbootstrap.com)

(2)官方地址

Bootstrap · The most popular HTML, CSS, and JS library in the world. (getbootstrap.com)

(3)中文地址

开始使用 Bootstrap · Bootstrap v5.3 (sbox.cn)

(4)图标

Bootstrap Icons · Official open source SVG icon library for Bootstrap (getbootstrap.com)

(5)示例代码

Examples · Bootstrap v5.3 (getbootstrap.com)

3、知识点汇总

(1)布局系统​

类名 作用 代码示例
.container 响应式固定容器 <div >
.container-fluid 全屏流动容器 <div >
.row 行容器 <div >
.col-{breakpoint}-* 列定义(*为1-12) <div >
.g-{n} 列间距(n=0-5) <div >

(2)响应式断点​

断点前缀 屏幕宽度 典型用法
- <576px 手机竖屏
sm ≥576px 手机横屏/小平板
md ≥768px 平板
lg ≥992px 小桌面
xl ≥1200px 大桌面
xxl ≥1400px 超大屏幕(Bootstrap 5新增)

(3)常用组件

按钮、导航栏、卡片

(4)实用类工具​

类别 示例类名 作用
边距 mt-3,mb-lg-4 外距调整(0-5)
内边距 px-2,py-sm-3 内距调整
文本 text-center,fs-4 对齐/字体大小
背景色 bg-dark,bg-gradient 背景颜色/渐变
显示 d-none,d-md-block 响应式显示控制
弹性盒子 d-flex,justify-content-between 弹性布局控制

(5)表单控件

<div >  <label >邮箱地址</label>  <input type="email"  placeholder="name@example.com"></div><div >  <input  type="checkbox">  <label >同意协议</label></div><!-- 浮动标签 --><div >  <input type="email"  id="floatingInput" placeholder="name@example.com">  <label for="floatingInput">邮箱地址</label></div>

(6)交互组件

模态框、下拉菜单

三、简单入门

1、引入bootstrap5

(1)本地安装后引入(生产环境一般用这个)

cursor生成:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Bootstrap 5 Test</title>    <!-- Bootstrap CSS -->    <link href="/node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet"></head><body>    <div >        <h1 >Bootstrap 5 Test</h1>        <button  id="testButton">Test Button</button>        <div id="debugOutput" ></div>    </div>    <!-- Bootstrap Bundle with Popper -->    <script src="/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>    <script>        // 添加调试代码        document.getElementById('testButton').addEventListener('click', () => {            const debugOutput = document.getElementById('debugOutput');            debugOutput.innerHTML = `<div >Button clicked at ${new Date().toLocaleTimeString()}</div>`;            console.log('Button clicked!');        });    </script></body></html>

(2)引用链接(一般用于学习bootstrap5)

官方示例:

<!doctype html><html lang="en">  <head>    <meta charset="utf-8">    <meta name="viewport" content="width=device-width, initial-scale=1">    <title>Bootstrap demo</title>    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.5/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-SgOJa3DmI69IUzQ2PVdRZhwQ+dy64/BUtbMJw1MZ8t5HZApcHrRKUc4W0kG879m7" crossorigin="anonymous">  </head>  <body>    <h1>Hello, world!</h1>    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.5/dist/js/bootstrap.bundle.min.js" integrity="sha384-k6d4wzSIapyDyv1kpU366/PK5hCdSbCRGRCMv+eplOQJWyd1fbcAu9OCUj5zNLiq" crossorigin="anonymous"></script>  </body></html>

2、布局

2.1 断点

断点 · Bootstrap v5.3

断点是响应式设计的构建基块。使用断点来控制何时可以在特定视口或设备大小上调整布局。

什么意思?也就是说,当页面变化到一定尺寸时,就会触发断点。比如,带文字的控件,在页面缩小到某个尺寸时,控件就变成了一个图标。

再比如容器,默认情况下,小于某尺寸就会以父容器全尺寸展示。

尺寸可查询官网,默认断点为Extra small,对应尺寸可重写:

如下是一种使用方式,当界面尺寸小于sm时,按钮文字就会消失:

<!DOCTYPE html><html lang="en"><head>    <meta charset="UTF-8">    <meta name="viewport" content="width=device-width, initial-scale=1.0">    <title>Bootstrap 5 Test</title>    <!-- Bootstrap CSS -->    <link href="/node_modules/bootstrap/dist/css/bootstrap.min.css" rel="stylesheet">    <style>        @media (max-width: 575.98px) {            #testButton span {                display: none;            }        }    </style></head><body>    <div >        <h1 >Bootstrap 5 Test</h1>        <button  id="testButton"><span>Test Button</span></button>        <div id="debugOutput" ></div>    </div>        <!-- Bootstrap Bundle with Popper -->    <script src="/node_modules/bootstrap/dist/js/bootstrap.bundle.min.js"></script>    <script>        // 添加调试代码        document.getElementById('testButton').addEventListener('click', () => {            const debugOutput = document.getElementById('debugOutput');            debugOutput.innerHTML = `<div >Button clicked at ${new Date().toLocaleTimeString()}</div>`;            console.log('Button clicked!');        });    </script></body></html>

也可以使用混合宏SaaS(Syntactically Awesome Style Sheets 是一种 CSS 预处理器,Bootstrap 使用其实现 ​​模块化​​ 和 ​​可配置性​​),格式如:

@include media-breakpoint-down(md) { ... }

相对的,传统写法 @media (max-width: 767.98px) 是 CSS 的 ​​媒体查询(Media Query)​​,用于根据设备的视口(viewport)宽度应用特定样式。

2.2 容器

容器 · Bootstrap v5.3 (sbox.cn)

当我们了解断点的概念后,再去理解容器就简单多了,直接上表:

我们看到容器带了断点,会根据断点自动调整容器的大小,如container-md表示屏幕小于md尺寸时占满100%宽,大于或等于md时,大小等于父容器,特别的container-fluid在任何时候都是100%宽,即占满视野。

还可以通过Sass mixin(Sass 关键字,用于定义可复用的样式模块)自定义容器,详见文档,这里简单解读一下:

@mixin make-container($padding-x: $container-padding-x)

@mixin:Sass 关键字,用于定义可复用的样式模块。 make-container:混合宏名称,类似函数名。 $padding-x: $container-padding-x:参数列表,$padding-x是参数名,$container-padding-x是默认值(通常来自全局变量),这样可以允许通过$padding-x动态调整内边距,实现样式的灵活复用。

2.3网格系统

网格系统 · Bootstrap v5.3 (sbox.cn)

直接上表:

这么看这个表是不是有点熟悉了,也有很多断点。这个表格意思是每行最多能分成12列,列的类是col ,示例如下:

<div >  <div >左栏(小屏占6列,中屏占4列)</div>  <div >右栏(小屏占6列,中屏占8列)</div></div>

注意类后面带的数字,表示在xs时,左栏分6列,右栏分6列;在md时,左栏分4列,右栏分8列;加起来,都是12列。更多示例见官方文档,很有趣。

2.4 列

列(Columns) · Bootstrap v5.3 (sbox.cn)

列就是col,也就是网格系统的元素。我们现在来总结一下它的对齐方式:

以下是 Bootstrap 5 中关于「列」的核心知识点汇总表格:

​知识点​ ​说明​ ​核心类​ ​代码示例​
​工作原理​ 基于 Flexbox 的 12 列网格系统,通过.container > .row > .col层级构建 .container,.row,.col <div ><div ><div >内容</div></div>
​垂直对齐​ 行内所有列的垂直对齐方式 .align-items-start/center/end(行级) .align-self-*(列级) <div >
​水平对齐​ 控制列在行内的水平分布 .justify-content-start/center/end/around/between/evenly <div >
​列换行​ 当一行总列宽超过 12 时自动换行 无需特殊类,自动行为 <div >+ <div >(自动换行)
​分栏符​ 强制在指定位置换行 .w-100(通用) .d-none.d-{breakpoint}-block(响应式) <div ></div>(强制换行)
​排序类​ 控制列的顺序(DOM 顺序不变,视觉顺序变化) .order-{1-5} .order-{breakpoint}-* .order-first/last <div >(中屏第二顺位)
​偏移类​ 通过网格类向右移动列 .offset-{breakpoint}-{1-11} <div >(居中布局)
​边距工具​ 使用间距工具实现灵活偏移 .ms-auto(左外边距自动) .me-auto(右外边距自动) <div >(右对齐)
​独立列类​ 在非.row容器中使用列类 .col-*(需手动处理间距) <div >独立列</div>

2.5 槽

槽(Gutters) · Bootstrap v5.3 (sbox.cn)

​分类​ ​类名/方法​ ​功能描述​ ​注意事项/示例​
​工作原理​ - 槽是列之间的间隙,通过水平padding创建,并用负margin对齐内容。默认宽度为1.5rem(即24px) 所有列的左右padding形成间隙,行首尾用负margin抵消。支持响应式调整。
​水平 Gutters​ .gx-* 控制水平槽宽度(如.gx-3)。 大槽宽可能导致溢出,需在父级容器添加.px-*调整或使用.overflow-hidden包裹.row
​垂直 Gutters​ .gy-* 控制垂直槽宽度(如.gy-5)。 垂直槽可能导致行下方溢出,需用.overflow-hidden包裹.row
​水平和垂直 Gutters​ .g-* 同时控制水平和垂直槽宽度(如.g-2)。 小槽宽通常无需额外溢出处理(如.g-2)。
​行列槽​ .row-cols-*+ 槽类 响应式行列和槽结合,如.row-cols-lg-5+.g-lg-3 示例:<div >
​无槽​ .g-0 移除所有槽(删除负margin和列的padding)。 边缘到边缘设计需移除父级.container,并在.row添加.mx-0。示例:<div >
​更换槽​ Sass变量 通过修改$gutters$spacers的Sass映射自定义槽宽。 默认基于$grid-gutter-width: 1.5rem,可调整如$gutters: (3: $spacer, ...)

2.6 实用工具

用于布局的实用程序 · Bootstrap v5.3 (sbox.cn)

​知识点​ ​核心类/用法​ ​作用​ ​示例​ ​注意事项​
​改变 display​ .d-{value} .d-{breakpoint}-{value} 响应式控制元素的显示方式 .d-none(隐藏元素) .d-md-block(在 md 断点以上显示为块元素) 支持inlineblockflexgrid等值;与响应式断点结合使用
​弹性框选项​ .d-flex .d-{breakpoint}-flex 将元素设为 Flex 容器,启用 Flex 布局 .d-flex.justify-content-between(弹性容器+两端对齐) 需先启用 Flex 容器才能使用其他 Flex 工具类(如对齐、间距)
​边距和填充​ {property}{sides}-{size} {property}{sides}-{breakpoint}-{size} 控制元素的外边距(margin)或内边距(padding) .mt-3(上边距 1rem) .px-md-4(在 md 断点以上左右内边距 1.5rem) - 支持m(margin)/p(padding) - 方向:t/b/s/e/x/y - 大小:0-5(0=0,5=3rem)
​切换 visibility​ .visible .invisible 控制元素可见性(保留布局空间) .invisible(元素不可见但占据布局) display: none不同,visibility: hidden不会破坏布局

2.7 z-index

Z-index · Bootstrap v5.3 (sbox.cn)

z-index用于定义页面顶层显示组件的优先级,谁的数值大,就显示在最前面。

变量名 (SCSS) 组件/用途 z-index值 说明
$zindex-dropdown 下拉菜单 1000 基础下拉组件层级
$zindex-sticky 粘性定位元素 1020 固定定位但需要滚动控制的元素
$zindex-fixed 固定定位元素 1030 如固定在顶部/底部的导航栏
$zindex-offcanvas-backdrop Offcanvas背景层 1040 侧边栏弹出时的遮罩层
$zindex-offcanvas Offcanvas侧边栏 1045 侧边栏内容显示层级
$zindex-modal-backdrop 模态框背景层 1050 模态对话框的遮罩
$zindex-modal 模态框 1055 模态对话框内容层级
$zindex-popover 弹出框 1070 信息提示框(层级高于模态框)
$zindex-tooltip 工具提示 1080 文字提示信息
$zindex-toast Toast通知 1090 即时消息通知(最高层级)
- 组件边框重叠处理 1/2/3 用于输入组等元素的默认(1)、悬停(2)

(1)层级设计从1000开始递增,确保常用组件按优先级层叠

(2)较高值组件(如Toast)会覆盖较低值组件(如模态框)

(3)特殊低位值(1-3)用于处理表单控件等元素的交互状态叠加

(4)官方建议不要单独修改单个值,调整时需考虑整体层级关系

(5)通过Sass变量集中管理,便于主题定制时统一调整

2.8 CSS网格(被禁用的秘术)

CSS 网格 · Bootstrap v5.3 (sbox.cn)

新技术,被禁用的秘术,实验阶段,可暂不学习或使用。

​知识点​ ​描述​ ​关键特性/示例​
​工作原理​ 启用CSS Grid替代默认网格系统 - 设置$enable-grid-classes: false$enable-cssgrid: true - 使用.grid代替.row.g-col-*代替.col-* - 通过CSS变量(如--bs-columns)定义列和间隙
​主要区别​ 与默认Flexbox网格的差异 - 间隙(gap)替代gutter,影响水平和垂直间距 - Flex工具对CSS Grid列无效 - 内联样式优先于修饰类(如
​示例​ 基础布局示例 包含三列、响应式、自动换行等场景
​三列​ 等宽三列布局 使用.g-col-4类(总列数为12时,每列占4份)
​响应式​ 响应式断点调整列宽 .g-col-6 .g-col-md-4(移动端占6列,中屏及以上占4列)
​包装​ 自动换行至下一行 使用.g-col-6生成两列,超出父容器宽度时自动换行
​开始​ 控制列的起始位置 使用.g-start-*类(如.g-start-2从第2列开始)
​自动列​ 未指定列类时自动均分宽度 直接子元素自动成为等宽列(默认1列)
​嵌套​ 嵌套网格继承父级列数,需手动重置 嵌套时需重置--bs-columns(如
​自定义​ 通过CSS变量动态调整布局 ---bs-columns: 列数 ---bs-gap: 间隙大小 ---bs-rows: 行数
​无网格类​ 直接子元素自动适应为网格项 无需显式添加.g-col-*类,自动填充可用空间
​列和间隙​ 自定义列数和间隙大小 结合.g-col-6.g-col-4
​添加行​ 显式定义行数和行内位置 设置--bs-rows:3并配合grid-row属性定位
​间隙​ 单独控制垂直/水平间隙 使用row-gapcolumn-gap(如定义垂直和水平间隙)
​Sass​ 通过Sass变量预生成类,但灵活性受限 修改$grid-columns$grid-gutter-width后需重新编译,或使用内联样式扩展布局

3、内容

3.1 Reboot

重新启动(Reboot) · Bootstrap v5.3 (sbox.cn)

Reboot是单个文件中特定于元素的CSS更改的集合,启动Bootstrap以提供一个优雅,一致和简单的基线来构建。

​知识点​ ​要点​
​方法​ • 通过元素选择器覆盖默认样式,其他样式通过类(如.table)实现 • 使用rem替代em定义间距 • 避免margin-top,防止边距折叠 • 优先使用继承和 CSS 变量
​CSS 变量​ • 从 v5.2.0 开始引入,映射 Sass 变量到 CSS 变量 • 允许实时自定义(如) • 所有 CSS 包包含:root变量定义
​页面默认值​ • 全局box-sizing: border-box<body>默认font-size: 1rem<body>设置背景色为#fff,字体继承系统字体堆栈
​原生字体堆栈​ • 使用跨平台系统字体(如system-ui,Segoe UI,Roboto) • 包含表情符号字体(如Apple Color Emoji) • 提升渲染性能和可访问性
​标题​ • 移除margin-top,设置margin-bottom: 0.5rem • 行高更紧凑 • 支持通过--bs-heading-color变量覆盖颜色
​段落​ • 移除margin-top,设置margin-bottom: 1rem
​链接​ • 默认下划线,:hover颜色变化 • 使用rgba()-rgb变量控制透明度(如--bs-link-opacity) • 占位符链接(无href)重置为默认样式
​水平线​ • 通过border-top定义样式 • 继承父级颜色 • 支持实用类(如.border-danger.opacity-50
​列表​ • 移除上下边距,嵌套列表无margin-bottom<ul>/<ol>左内边距重置 •<dt>加粗,<dd>左外边距为0
​内联代码​ • 使用<code>标签,需转义 HTML(如&lt;section&gt;
​代码块​ • 使用<pre>包裹多行代码 • 移除margin-topmargin-bottom使用rem单位
​变量​ • 使用<var>表示变量(如数学公式中的变量)
​用户输入​ • 使用<kbd>表示键盘输入(如<kbd>Ctrl</kbd> + <kbd>C</kbd>
​示例输出​ • 使用<samp>表示程序输出
​表格​ • 默认样式简化 • 边框对齐优化 • 复杂样式需通过.table类实现
​表单​ <fieldset>无边框/边距 •<label>设为inline-block<textarea>仅允许垂直调整大小 • 按钮默认cursor: pointer
​按钮上的指针​ role="button"元素自动应用cursor: pointer
​地址​ <address>font-style重置为normal • 添加margin-bottom: 1rem
​块引用​ • 移除默认margin(改为0 0 1rem) • 与其他元素间距一致
​内联元素​ <abbr>显示为下划线虚线,提升可读性
​总结​ <summary>默认cursor: pointer(如折叠内容)
​HTML5 [hidden] 属性​ • 强制display: none !important • 与 jQuery.hide()/.show()不兼容

3.2 排版

字体排版 · Bootstrap v5.3 (sbox.cn)

以下是对Bootstrap v5.3字体排版知识点的总结表格:

​知识点​ ​作用描述​ ​使用方式/示例​ ​相关类/Sass变量​
​全局设置​ 定义基础排版样式,包括字体、字号、行高、链接颜色和背景色 通过<body>设置全局样式 $font-family-base,$font-size-base,$link-color,$body-bg
​标题​ 提供HTML标题<h1><h6>的标准样式 <h1>标题</h1> .h1-.h6类(用于非标题元素)
​自定义标题​ 在标题旁添加小号副标题 <h3>主标题 <small >副标题</small></h3> text-body-secondary
​禁用标题(Display headings)​ 更大的强调标题样式 <h1 >超大标题</h1> .display-1-.display-6类,Sass变量:$display-font-sizes,$display-font-weight
​突出(Lead)​ 突出段落文本的强调样式 <p >突出段落</p> .lead类,Sass变量:$lead-font-size,$lead-font-weight
​内联文本元素​ 为内联标签(如<mark><del>)提供语义化样式 <mark>高亮</mark>,<del>删除线</del> 对应标签或.mark,.small,.text-decoration-underline等类
​文本实用程序​ 通过工具类快速调整文本对齐、颜色、粗细等属性 <p >居中加粗</p> text-*,fw-*,text-decoration-*等类
​缩写​ <abbr>标签提供悬停提示和样式 <abbr title="World Wide Web" >WWW</abbr> .initialism类,Sass变量:$initialism-font-size
​块引用​ 引用内容的块级样式 <blockquote >引用内容</blockquote> .blockquote
​命名源​ 在块引用中添加来源说明 <figure><blockquote>...</blockquote><figcaption >来源</figcaption> .blockquote-footer
​对准​ 控制块引用内容的对齐方式 <figure >...</figure> text-center,text-end
​列表(无样式)​ 移除列表默认样式(仅直系子元素) <ul >...</ul> .list-unstyled
​列表(内嵌)​ 将列表项水平排列 <ul ><li >项1</li>...</ul> .list-inline,.list-inline-item
​说明列表对齐方式​ 使用网格系统对齐说明列表的术语和描述 <dl ><dt >术语</dt><dd >描述</dd></dl> .row,.col-*网格类
​响应式字体大小​ 自动根据设备调整字体大小(默认启用) 自动生效,无需额外代码 RFS(Responsive Font System)机制
​Sass变量​ 控制排版样式的全局变量 自定义变量如$headings-font-weight: 700; $headings-*,$display-*,$lead-*,$blockquote-*等系列变量
​Sass混合​ 无专用排版混合,但使用RFS实现响应式字体 通过@include font-size()混合使用 @mixin font-size()(RFS内置)

(1)​​响应式字体​​:通过RFS自动缩放字号,适配不同屏幕。

(2)语义化样式​​:使用HTML5标签(如<mark><blockquote>)配合工具类。

(3)灵活定制​​:通过Sass变量全局控制排版参数(字号、行高、颜色等)。

(4)​​布局整合​​:列表与网格系统(如说明列表对齐)深度结合。

3.3图像

图像 · Bootstrap v5.3 (sbox.cn)

分类 类名/变量 作用 示例代码 注意事项 Sass 变量
​响应式图像​ .img-fluid 让图像随父容器宽度自动缩放 <img src="..." alt="..."> 需要父容器有宽度约束,max-width: 100%height: auto
​图像缩略图​ .img-thumbnail 添加圆角边框和缩略图样式 <img src="..." alt="..."> 默认尺寸 200x200,包含border-radius和 1px 边框 $thumbnail-padding $thumbnail-bg $thumbnail-border-width $thumbnail-border-color $thumbnail-border-radius $thumbnail-box-shadow
​对齐图像​ .float-start/.float-end 左对齐/右对齐图像 <img ...> 需要配合.clearfix清除浮动
.mx-auto.d-block 水平居中图像 <img ...> 需同时使用.d-block.mx-auto
父容器使用.text-center 通过文本对齐方式居中图像 <div ><img ...></div> 依赖父容器的文本对齐属性
​图片元素​ 类加在<img>而非<picture> 为响应式图片指定多个<source>时保持样式兼容性 <picture><source ...><img ...></picture> 所有样式类必须直接应用于<img>标签
​CSS/Sass​ 变量前缀$thumbnail-* 自定义缩略图样式(内边距、背景、边框等)

(1)响应式图像​​:核心是限制图像最大宽度为父容器宽度,避免溢出

(2)缩略图样式​​:通过 6 个 Sass 变量完全控制外观,支持主题定制

(3)对齐系统​​:浮动对齐:传统布局方式,需注意清除浮动Flex/Grid 对齐:更推荐使用 Bootstrap 的 Flex 工具类

(4)图片元素​​:强调语义化 HTML5 规范,保持与框架样式兼容​

(5)主题定制​​:通过覆盖 Sass 变量快速修改全局缩略图样式,保持设计一致性

3.4表格

表格 · Bootstrap v5.3 (sbox.cn)

​分类​ ​核心要点​ ​相关类/属性​ ​特点​
​概述​ 表格需手动添加基类.table,样式不继承嵌套表格 <table > 选择加入机制,避免与第三方组件冲突
​变体​ 通过上下文类改变表格/行/单元格颜色 .table-primary.table-secondarytr/td直接应用类 颜色模式自适应暂不支持,需确保内容可访问性
​Accented 表格​ 通过条纹和悬停增强视觉效果
- 条带行 隔行变色效果 .table-striped 作用于<tbody>,可与其他变体组合
- 条纹列 隔列变色效果 .table-striped-columns 列级视觉分隔
- 可悬停行 鼠标悬停高亮行 .table-hover 增强交互反馈
- 活动表格 主动高亮特定行/单元格 .table-active 通过明暗对比突出显示
​实现原理​ 使用 CSS 变量和盒阴影叠加技术 --bs-table-bg box-shadow: inset 半透明颜色叠加,自动计算对比度
​边框控制​
- 带边框 全边框表格 .table-bordered .border-primary 支持自定义边框颜色
- 无边框 去除默认边框 .table-borderless 简洁视觉风格
​紧凑表格​ 减少单元格内边距 .table-sm 内边距减半,适合数据密集型展示
​表组分隔​ 增强组间分隔线 .table-group-divider(加在<tbody>) 通过border-top实现,需自定义颜色时直接修改 CSS
​垂直对齐​ 控制单元格内容对齐 .align-middle .align-bottom .align-top 默认继承表格对齐方式,可逐级覆盖
​嵌套表格​ 嵌套表格独立样式 父表格不传递样式 使用:not(caption) > *选择器隔离样式
​解剖结构​
- 表头控制 定制表头背景色 <thead > .table-dark 与表格主色分离控制
- 表尾 与表头样式分离 <tfoot> 独立控制样式
​字幕​ 表格标题辅助功能 <caption> .caption-top 支持顶部/底部定位,增强可访问性
​响应式表格​ 水平滚动解决方案
- 始终响应 全断点响应 .table-responsive包裹 强制横向溢出滚动
- 断点响应 指定生效的断点 .table-responsive{-sm/md/lg/xl/xxl} 达到断点后恢复默认显示
​CSS/Sass​
- 变量 控制内边距/颜色/对比度等 $table-cell-padding-y $table-striped-bg-factor $table-bg-scale 通过调整因子变量控制叠加透明度
- 循环机制 自动生成变体样式 @each $state, $background in $table-variants 动态生成 8 种颜色变体的 CSS 变量
​定制​ 通过覆盖 Sass 变量实现主题化 修改$table-striped-bg-factor 调整$table-bg-scale 可创建高对比度或半透明效果

​(1)模块化控制​​:通过组合类实现样式叠加(如.table-dark.table-striped.table-hover

​(2)可访问性优先​​:强调颜色需配合文本语义,推荐使用.visually-hidden辅助说明

​(3)CSS 变量驱动​​:使用自定义属性实现动态主题切换能力

​(4)响应式分层​​:通过包裹容器实现滚动控制,保持核心表格结构简洁

3.5 数字

数字(Figures) · Bootstrap v5.3 (sbox.cn)

数字是在Bootstrap中使用图形组件显示相关图像和文本的文档和示例。

​类名/变量​ ​应用元素​ ​说明​ ​注意事项/额外信息​
.figure <figure> 作为图形组件的容器,提供基线样式(如边距、文本对齐)。 必须包裹图片和标题,确保整体布局一致性。
.figure-img <img> 定义图形内的图片样式(如间距、响应式支持)。 需要额外添加.img-fluid使图片自适应容器宽度,否则图片可能溢出。
.figure-caption <figcaption> 定义图形标题的样式(如字体大小、颜色)。 可通过文本工具类(如.text-end)调整标题对齐方式。
$figure-caption-font-size Sass变量 控制标题字体大小,默认值为$small-font-size(Bootstrap定义的小号字体)。 修改此变量可自定义标题字号,需在引入Bootstrap前覆盖。
$figure-caption-color Sass变量 控制标题颜色,默认值为var(--#{$prefix}secondary-color)(次级文本颜色)。 可通过CSS变量或直接修改此Sass变量调整标题颜色,适应主题色。

​(1)响应式图片​​:必须为图片添加.img-fluid类,否则图片可能无法自适应宽度。

(2)标题对齐​​:使用Bootstrap的文本工具类(如.text-start,.text-center,.text-end)调整标题位置。

(3)样式自定义​​:通过覆盖Sass变量或直接修改CSS变量,可快速调整标题的字体大小和颜色。

4、表单

表单 · Bootstrap v5.3 (sbox.cn)

用于创建各种窗体的窗体控件样式、布局选项和自定义组件的示例和使用指南。

​知识点​ ​描述​ ​关键点​
​概述​ Bootstrap 表单控件通过扩展样式类实现一致的表单呈现和交互。 - 使用type属性(如email,number)启用浏览器原生验证功能。 - 核心类:form-control,form-label,form-text
​禁用表单​ 通过disabled属性或<fieldset>禁用表单控件的交互和样式。 - 单个控件:添加disabled属性。 - 禁用整组控件:用<fieldset disabled>包裹,但需注意自定义控件(如<a>按钮)需手动设置tabindex="-1"aria-disabled
​可访问性​ 确保表单控件对辅助技术友好,提供清晰的辅助名称。 - 优先使用可见<label>。 - 替代方案:隐藏标签(.visually-hidden)、aria-labelledbytitlearia-label。 - 避免依赖placeholder作为唯一标签。
​CSS​ 通过共享 CSS 变量统一表单和按钮样式。 - 变量以$input-btn-*$input-*开头,控制内边距、字体、边框等。 - 例如:$input-btn-padding-y,$input-btn-font-size
​Sass 变量​ 全局变量用于按钮和表单组件之间的样式复用和扩展。 - ​​尺寸变量​​:如$input-btn-padding-y-sm(小尺寸)和$input-btn-font-size-lg(大尺寸)。 - ​​焦点样式​​:$input-btn-focus-width(焦点环宽度),$input-btn-focus-color(焦点颜色)。

4.1表单控件

表单控件 · Bootstrap v5.3 (sbox.cn)

分类 说明 核心类/属性 示例代码片段
​示例​ 基础表单控件结构 .form-control,.form-label <input type="email" >
​尺寸大小​ 控制输入框高度 .form-control-lg,.form-control-sm <input >
​表单文本​ 辅助说明文本,需与控件关联 .form-text+aria-labelledby/aria-describedby <div id="helpText">...</div>
​禁用​ 禁用交互和聚焦 disabled布尔属性 <input disabled>
​只读​ 禁止修改但允许聚焦 readonly布尔属性 <input readonly>
​只读纯文本​ 无边框的只读样式 .form-control-plaintext <input readonly>
​文件输入​ 文件上传控件 type="file",.form-control-sm/.form-control-lg <input type="file" >
​Color​ 颜色选择器 type="color"+.form-control-color <input type="color" >
​数据列表​ 预定义输入选项 <datalist>+list属性 <input list="datalistOptions"><datalist id="datalistOptions">...</datalist>
​CSS​ 全局表单样式 自动应用的基础样式 无需手动添加类
​Sass 变量​ 深度定制表单样式 $input-bg,$input-border-color,$form-label-margin-bottom $input-bg: var(--#{$prefix}body-bg);

4.2下拉选项

下拉选项(Select) · Bootstrap v5.3 (sbox.cn)

以下是对 Bootstrap 下拉选项(Select)知识点的总结表格:

知识点 说明 相关类/属性/变量 注意事项
​默认值​ 使用自定义类初始化<select>样式 .form-select 无法修改<option>样式(受浏览器限制)
​调整尺寸​ 通过类名设置大号或小号选择框 .form-select-lg(大号) .form-select-sm(小号) multiplesize属性 支持multiple(多选)和size(显示行数)属性
​禁用状态​ 禁用选择框并显示灰色外观 disabled属性 移除指针事件,禁止交互
​CSS​ 通过自定义 CSS 样式覆盖默认行为 自定义样式类 仅影响初始外观,无法修改浏览器原生选项样式
​Sass 变量​ 通过变量控制边距、背景、边框等样式 如: $form-select-padding-x(水平内边距) $form-select-bg(背景色) $form-select-border-radius(边框圆角) 修改变量需重新编译 Sass,支持主题定制(如颜色模式适配)

4.3 复选框和单选框

复选框和单选按钮 · Bootstrap v5.3 (sbox.cn)

知识点 类名/属性/方法 用途/特点 结构特点 注意事项
​方法​ .form-check 替换浏览器默认复选框/单选按钮样式,提供跨浏览器一致性 <input><label>为同级元素,需指定idfor属性关联 使用同级选择器(~)控制状态样式
​复选框​ .form-check-input(type="checkbox") 选择多个选项 包裹在.form-check容器中 自定义图标显示选中/未选状态
​未选(Indeterminate)​ :indeterminate伪类 表示不确定状态 需通过JavaScript手动设置 无对应HTML属性
​禁用(Disabled)​ disabled属性 禁用输入控件,标签颜色变浅 添加在<input>元素上 自动同步标签样式
​单选按钮(Radios)​ .form-check-input(type="radio") 单选一组选项 同复选框结构,需相同name属性分组 同一组单选按钮共享name属性
开关(Switches)​ .form-switch 切换开关控件,语义化为role="switch" 包裹在.form-check.form-switch容器中 旧版辅助技术会降级为复选框
​默认值(堆叠)​ 默认布局 垂直排列多个复选框/单选按钮 多个.form-check元素自然堆叠 自动添加间距($form-check-margin-bottom
​内嵌(Inline)​ .form-check-inline 水平排列控件 添加至.form-check容器 多个内嵌控件需分别添加此类
​反向(Reverse)​ .form-check-reverse 交换标签和输入框位置 添加至.form-check容器 可与其他修饰类(如.form-switch)组合使用
​无标签​ 省略.form-check容器 隐藏标签文本但保持可访问性 仅保留<input>元素 需用aria-label提供可访问名称
​切换按钮​ .btn-check+.btn样式 创建类似按钮的复选框/单选按钮 <input>隐藏,<label>作为按钮显示 屏幕阅读器会按原生类型(checkbox/radio)宣布
​复选框切换按钮​ .btn-check(type="checkbox") 按钮式多选控件 支持checkeddisabled状态 视觉与按钮插件切换相同,但语义不同
​单选按钮切换按钮​ .btn-check(type="radio") 按钮式单选控件 需相同name属性分组 支持轮廓样式(.btn-outline-*
​分级显示样式​ .btn-outline-* 创建轮廓风格的切换按钮 .btn-outline-primary 支持多种颜色变体(primary/secondary/success/danger等)
​CSS/Sass变量​ $form-check-*$form-switch-* 控制尺寸($form-check-input-width)、颜色($form-check-input-bg)等

4.4 范围(滑动条)

范围(Range) · Bootstrap v5.3 (sbox.cn)

​知识点​ ​描述​ ​相关属性/变量​ ​示例/默认值​
​概述​ 使用.form-range自定义<input type="range">,轨道和拇指样式统一。仅 Firefox 支持轨迹填充效果。 type="range", <input type="range" id="customRange1">
​禁用状态​ 添加disabled属性使输入灰显,阻止交互和聚焦。 disabled(布尔属性) <input type="range" disabled>
​最小和最大值​ 默认min=0,max=100,可自定义范围。 min,max <input type="range" min="0" max="5">
​步数​ 默认步长为整数值(step=1),可设置小数步长。 step <input type="range" step="0.5">
​CSS​ 通过 Sass 变量自定义轨道和拇指的样式。 见下方 ​​Sass 变量​​ 列
​Sass 变量​
- ​​轨道样式​ 轨道宽度、高度、背景色、边框圆角等。 $form-range-track-width,$form-range-track-height,$form-range-track-bg 默认值:100%,0.5rem,var(--#{$prefix}tertiary-bg)
- ​​拇指样式​ 拇指尺寸、背景色、边框、阴影等。 $form-range-thumb-width,$form-range-thumb-bg,$form-range-thumb-box-shadow 默认值:1rem,$component-active-bg,0 0.1rem 0.25rem rgba($black, 0.1)
- ​​交互状态​ 焦点状态阴影、禁用状态背景色等。 $form-range-thumb-focus-box-shadow,$form-range-thumb-disabled-bg 默认值:0 0 0 1px $body-bg,var(--#{$prefix}secondary-color)
- ​​过渡效果​ 拇指颜色和阴影的过渡动画。 $form-range-thumb-transition 默认值:background-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out

4.5 输入组

输入组 · Bootstrap v5.3 (sbox.cn)

​知识点​ ​要点​ ​说明​
​基本示例​ - 附加组件可放在输入框两侧 - 使用.input-group容器包裹 - 标签需放在输入组外部 通过<span >添加前缀/后缀,输入框用<input><textarea>
​包装(Wrapping)​ 默认启用flex-wrap: wrap.flex-nowrap禁用换行 控制输入组内元素的换行行为,适用于自定义验证场景
​调整尺寸(Sizing)​ 通过.input-group-sm/.input-group-lg调整整体大小 无需单独设置子元素尺寸 小尺寸用input-group-sm,大尺寸用input-group-lg
​复选框和单选按钮​ 将复选框/单选框放在.input-group-text中 添加.mt-0消除垂直间距 使用<div >包裹<input type="checkbox/radio">
​多个输入框​ 支持多个<input>并列 验证样式仅适用于单个输入的输入组 示例中展示两个输入框并列,但需注意验证限制
​多个插件(Multiple addons)​ 未提供示例,但可通过组合前缀/后缀实现 在输入框两侧添加多个附加组件(如$.00
​按钮插件(Button addons)​ 未直接提供示例,但可通过<button>替代.input-group-text实现 将按钮作为输入组的前缀或后缀
​自定义选择框​ 未提供示例 使用.form-select自定义下拉选择样式
​Sass 变量​ 未提供具体变量,但可通过覆盖 Bootstrap 变量(如$input-group-addon-bg)自定义样式 用于调整输入组背景色、边框等样式

4.6 浮动标签

浮动标签 · Bootstrap v5.3 (sbox.cn)

​知识点​ ​关键点​
​示例​ - 使用.form-floating包裹<input><label><input>必须在前 -placeholder必填,<label>通过for绑定id - 表单验证通过.is-invalid类实现
​Textareas​ - 默认高度与<input>相同 - 自定义高度需用(禁用rows属性) - 示例:<textarea >
​选择(Selects)​ - 使用.form-select类 - 不支持sizemultiple属性 - 标签始终处于浮动状态(与输入框不同)
​禁用(Disabled)​ - 添加disabled属性使输入框灰显,阻止交互 - 适用于<input><textarea><select>
​只读明文​ - 使用.form-control-plaintextreadonly属性 - 显示为纯文本且不影响布局 - 空输入时标签仍浮动,有值时显示为明文
​输入组​ - 在.input-group内使用.form-floating - 验证反馈需放在.form-floating外、.input-group内(需JavaScript控制显示)
​布局​ - 结合网格系统(如row g-2col-md)实现响应式布局 - 每个表单元素单独放在列中
​CSS​ - 依赖.form-floating.form-control.form-select等类 - 验证样式通过.is-invalid.invalid-feedback实现
​Sass变量​ - 控制浮动标签的样式参数: - 高度:$form-floating-height - 标签动画:$form-floating-label-transform - 禁用颜色:$form-floating-label-disabled-color

Saas变量补充说明:

​知识点​ ​关键点​
​示例​ - 使用.form-floating包裹<input><label><input>必须在前 -placeholder必填,<label>通过for绑定id - 表单验证通过.is-invalid类实现
​Textareas​ - 默认高度与<input>相同 - 自定义高度需用(禁用rows属性) - 示例:<textarea >
​选择(Selects)​ - 使用.form-select类 - 不支持sizemultiple属性 - 标签始终处于浮动状态(与输入框不同)
​禁用(Disabled)​ - 添加disabled属性使输入框灰显,阻止交互 - 适用于<input><textarea><select>
​只读明文​ - 使用.form-control-plaintextreadonly属性 - 显示为纯文本且不影响布局 - 空输入时标签仍浮动,有值时显示为明文
​输入组​ - 在.input-group内使用.form-floating - 验证反馈需放在.form-floating外、.input-group内(需JavaScript控制显示)
​布局​ - 结合网格系统(如row g-2col-md)实现响应式布局 - 每个表单元素单独放在列中
​CSS​ - 依赖.form-floating.form-control.form-select等类 - 验证样式通过.is-invalid.invalid-feedback实现
​Sass变量​ - 控制浮动标签的样式参数: - 高度:$form-floating-height - 标签动画:$form-floating-label-transform - 禁用颜色:$form-floating-label-disabled-color

​4.7布局

布局 · Bootstrap v5.3 (sbox.cn)

知识点 描述 关键类 示例代码片段
​表单(Forms)​ 默认垂直堆叠布局,使用<form>包裹控件 .form-control,.form-label <input type="text" >
​实用工具(Utilities)​ 用间距工具控制表单元素分组 .mb-3(下边距)等 margin 类 <div >...</div>
​表单网格(Form grid)​ 用网格系统创建多列布局 .row,.col <div ><div >...</div></div>
​槽(Gutters)​ 控制网格列间距 .g-*(如g-3 <div >...</div>
​横向表单(Horizontal)​ 标签和控件水平排列 .row,.col-form-label,.col-sm-* <div ><label >...</div>
​水平标签大小调整​ 标签与输入框大小匹配 .col-form-label-sm/lg,.form-control-sm/lg <label >,<input >
​列大小调整​ 自定义列宽,非均匀分配 .col-sm-7(指定宽度) <div ><input...></div>
​自适应大小(Auto-sizing)​ 列宽根据内容自动调整 .col-auto,.gy-*,.gx-*,.align-items-center <div ><input...></div>
​内联表单(Inline forms)​ 响应式水平排列,移动端堆叠 .row-cols-lg-auto

4.8 验证器

验证器(Validation) · Bootstrap v5.3 (sbox.cn)

验证表达数据。

​主题​ ​核心描述​
​工作原理​ - 使用CSS伪类:invalid:valid - 父容器.was-validated控制激活时机 - 提交后需移除类名重置样式 - 服务端用.is-invalid/.is-valid代替伪类
​自定义样式​ -<form>添加novalidate禁用浏览器提示 - 结合JavaScript拦截提交事件并添加反馈 - 输入组需.has-validation修复边框问题
​浏览器默认值​ - 依赖原生浏览器验证样式 - 无法通过CSS修改样式,但支持JavaScript修改提示文本 - 不同浏览器样式差异明显
​服务端验证​ - 直接使用.is-invalid/.is-valid类 - 需通过aria-describedby关联错误信息 - 输入组需.has-validation
​支持的元素​ - 支持控件:.form-control(输入框/文本域)、.form-select(下拉框)、.form-check(复选框/单选框)
​工具提示​ - 使用.valid-tooltip/.invalid-tooltip替代反馈框 - 父元素需position: relative定位工具提示
​CSS变量​ - v5.3新增:--form-valid-color--form-invalid-border-color等 - 自动适配深色模式
​Sass变量​ - 定义边距、字体、颜色(如$form-feedback-valid-color: $success) - 含SVG图标数据变量
​Sass混合​ -form-validation-state-selector():生成状态选择器逻辑 -form-validation-state():生成完整验证样式(边框、图标、聚焦阴影)
​Sass映射​ -$form-validation-states定义valid/invalid状态配置(颜色、图标、工具提示背景等)
​Sass循环​ - 遍历$form-validation-states映射生成所有验证状态的CSS样式 - 修改映射可扩展自定义状态
​自定义​ - 通过覆盖Sass映射添加新状态(如警告状态) - 调整颜色、图标、工具提示参数,即使浏览器不支持其他状态也可通过CSS实现视觉反馈

5、组件

5.1 手风琴(可折叠控件)

手风琴 · Bootstrap v5.3 (sbox.cn)

可以长这样:

知识点 说明
​工作原理​ 使用Collapse插件实现折叠效果,.open类控制初始展开项,动画受prefers-reduced-motion媒体查询影响
​示例结构​ 由外层.accordion包裹多个.accordion-item,每个项包含按钮(触发折叠)和折叠内容区域
​Flush样式​ 添加.accordion-flush类移除边框和圆角,使手风琴与父容器边缘对齐
​始终打开模式​ 移除data-bs-parent属性,允许多个折叠项同时保持展开状态
​可访问性​ 需遵循Collapse组件的ARIA规范,包含aria-expandedaria-controls属性,支持键盘导航
​CSS变量​ v5.2+支持通过:root变量定制颜色、背景、过渡动画等(如--bs-accordion-bg定义背景色)
​Sass变量​ 通过Sass变量深度定制样式,如$accordion-border-width调整边框、$accordion-icon-transform控制图标旋转角度

5.2 警报

警报(Alerts) · Bootstrap v5.3 (sbox.cn)

​类别​ ​子项​ ​核心知识点​
​示例​ 现场示例 使用 JavaScript 动态生成警报,内置关闭按钮和淡出动画效果
链接颜色(Link color) 使用.alert-link类为警报内的链接提供匹配的上下文颜色
其他内容 支持添加标题、段落、分隔线(<hr>)和多段落内容,需配合间距工具类使用
Icons 使用 Flexbox 工具和 Bootstrap 图标创建带图标的警报,建议使用 SVG 精灵优化重复图标
消除警报(Dismissing) 添加.alert-dismissible类 + 带data-bs-dismiss="alert"的关闭按钮,关闭后元素从 DOM 删除。需注意键盘用户的焦点管理
​CSS​ 变量 使用 CSS 变量实时自定义警报样式(v5.2.0 新增),例如:--bs-alert-bg--bs-alert-padding-x
Sass 变量 定义警报的基础样式,如$alert-padding-y(内边距)、$alert-margin-bottom(下边距)
Sass mixin ​v5.3.0 已弃用​​,原用alert-variant()生成上下文修饰类
Sass 循环 使用@each循环遍历主题色生成修饰类(如.alert-primary),覆盖 CSS 变量实现颜色定制
​JavaScript 行为​ 初始化 通过new bootstrap.Alert(element)手动初始化,或通过data-bs-dismiss="alert"自动初始化
触发器(Triggers) 在关闭按钮上添加data-bs-dismiss="alert",支持内部按钮或外部按钮(需额外data-bs-target
方法 -close():关闭并删除元素 -dispose():销毁实例 -getInstance()/getOrCreateInstance():获取或创建实例
事件 -close.bs.alert:关闭时立即触发 -closed.bs.alert:关闭动画完成后触发,需在此事件中处理焦点重置

5.3徽章(标记)

徽章(Badges) · Bootstrap v5.3 (sbox.cn)

可以长这样:

知识点 用途 关键类/变量 注意事项
​标题​ 在标题中显示徽章标签 .badge.bg-secondary 徽章通过em单位自动缩放,与父元素字体大小匹配
​按钮​ 在按钮内显示计数器或状态 .badge.text-bg-secondary 需确保辅助技术用户能理解上下文,可用.visually-hidden补充隐藏文本
​定位​ 将徽章定位在按钮/元素的角落 .position-relative.position-absolute.translate-middle.top-0 结合绝对定位工具类实现精确位置,可用.rounded-circle.rounded-pill修改形状
​背景颜色​ 快速设置背景色和对比前景色(v5.2.0+) .text-bg-{color}(如.text-bg-primary 颜色仅提供视觉提示,需确保内容本身含义明确
​药片式徽章​ 创建圆角更大的胶囊形状徽章 .rounded-pill 需与颜色类组合使用(如.text-bg-danger.rounded-pill
​CSS 变量​ 实时自定义徽章样式(v5.2.0+) --badge-padding-x--badge-font-size--badge-border-radius 变量基于 Sass 设置,支持动态覆盖
​Sass 变量​ 通过 Sass 自定义徽章基础样式 $badge-font-size: .75em$badge-padding-y: .25em$badge-color: $white

5.4面包屑(导航位置)

面包屑 · Bootstrap v5.3 (sbox.cn)

长这样:

​知识点​ ​关键内容​
​示例​ - 使用<nav>包裹有序列表<ol >,每项为<li >。 - 最后一项添加active类和aria-current="page"表示当前页。 - 非最后一项用<a>标签包裹链接。
​分隔符​ - ​​默认分隔符​​:/,通过CSS伪元素::before--bs-breadcrumb-divider变量实现。 - ​​自定义方法​​: - CSS:或SVG图标(需转义)。 - Sass:$breadcrumb-divider: quote(">")$breadcrumb-divider: none(移除分隔符)。 - 支持RTL反向分隔符$breadcrumb-divider-flipped
​可访问性​ - 需为<nav>添加aria-label="breadcrumb"。 - 当前页项添加aria-current="page"。 - 确保分隔符对屏幕阅读器隐藏(通过CSS伪元素实现)。
​CSS变量​ - ​​核心变量​​: --bs-breadcrumb-divider(分隔符)、 --bs-breadcrumb-item-padding-x(项间距)、 --bs-breadcrumb-active-color(当前页颜色)。 - 覆盖方法:在父元素或内联样式中直接赋值。
​Sass变量​ - ​​核心变量​​: $breadcrumb-divider(分隔符)、 $breadcrumb-divider-color(分隔符颜色)、 $breadcrumb-font-size(字体大小)。 - 修改需重新编译Sass,且支持动态RTL适配($breadcrumb-divider-flipped)。

5.5按钮

按钮 · Bootstrap v5.3 (sbox.cn)

​知识点​ ​说明​ ​示例/类名/方法​
​基类​ 基础类.btn设置基本样式,需与其他变体类结合使用 <button >按钮</button>
​按钮变体​ 提供多种语义化颜色变体(共9种) btn-primary,btn-secondary,btn-success...
​禁用文本环绕​ 防止按钮文本换行 .text-nowrap或通过Sass变量$btn-white-space: nowrap
​按钮标签​ 可用于<button><a><input>元素 <a role="button">链接按钮</a>
​Outline buttons​ 无背景色的边框按钮 btn-outline-primary,btn-outline-secondary...
​尺寸大小​ 预定义大小:大(.btn-lg)、小(.btn-sm),支持CSS变量自定义 <button >大按钮</button>
​禁用状态​ 通过disabled属性或.disabled类禁用按钮 <button disabled>禁用按钮</button> <a aria-disabled>
​链接功能注意事项​ 禁用链接需添加tabindex="-1"aria-disabled="true" <a tabindex="-1" aria-disabled>禁用链接</a>
​块按钮​ 使用栅格系统创建全宽响应式按钮 <div > <button >块按钮</button></div>
​按钮插件​ 通过JavaScript实现交互功能(如切换状态) data-bs-toggle="button"
​切换状态​ 按钮的激活状态(active) <button data-bs-toggle="button">切换按钮</button>
​方法​ JavaScript控制按钮的方法 toggle(),dispose(),getInstance()
​CSS变量​ 动态自定义按钮样式(如内边距、颜色等) --bs-btn-padding-y,--bs-btn-bg
​Sass变量​ 通过Sass配置按钮参数(如字体、边框、阴影等) $btn-padding-y,$btn-border-radius,$btn-transition
​Sass混合​ 快速生成按钮变体的混合函数 @include button-variant(),@include button-outline-variant()
​Sass循环​ 自动生成所有主题色对应的按钮类 遍历$theme-colors生成btn-*btn-outline-*

5.6按钮组

按钮组 · Bootstrap v5.3 (sbox.cn)

​知识点​ ​结构/类​ ​关键特性​ ​注意事项​ ​示例代码简写​
​基本示例​ <div >+.btn 按钮水平排列,需添加role="group"aria-label 必须为辅助技术提供明确的组标签 <div role="group" aria-label="...">+ 多个.btn
​混合样式​ 不同按钮类混合使用(如.btn-danger,.btn-warning 允许不同颜色/样式的按钮组合 确保视觉一致性 <button >,<button >
​分级显示样式​ 使用 Outline 样式(.btn-outline-* 按钮边框样式,背景透明 适用于需要轻量级设计的场景 <button >
​复选框/单选组​ <input type="checkbox/radio">+<label>配合.btn-check.btn 将表单控件伪装成按钮组 input需隐藏,label绑定for属性,关闭自动补全 <input type="checkbox" >+<label for="...">
​按钮工具栏​ <div >包含多个.btn-group 组合多个按钮组,支持间距工具类(如.me-2 需为工具栏和每个子组添加rolearia-label <div role="toolbar">+ 多个嵌套.btn-group
​调整尺寸​ 在父容器添加.btn-group-lg/.btn-group-sm 统一调整组内所有按钮大小 无需单独为每个按钮设置尺寸类 <div >
​嵌套​ .btn-group中嵌套另一个.btn-group(如下拉菜单) 实现复杂交互(如按钮与下拉菜单混合) 下拉菜单需要配合dropdown-toggledropdown-menu <div >+ 嵌套<div >+ 下拉菜单代码
​垂直变化​ 使用.btn-group-vertical 按钮垂直堆叠 不支持水平方向的下拉菜单分割 <div >+ 多个垂直排列的.btn

5.7卡片

卡片 · Bootstrap v5.3 (sbox.cn)

学习链接 知识点总结
​示例​ 展示基础卡片结构,包含图片、标题、文本和按钮的混合内容
​内容类型​
- 主体(Body) 使用.card-body类定义卡片内容区域
- 标题/文本/链接 使用.card-title.card-text.card-link类设置标题、文本和链接样式
- 图片(Images) .card-img-top/.card-img-bottom在卡片顶部/底部添加图片
- 列表组 .list-group.list-group-flush结合使用创建无边框列表
- Kitchen sink 综合示例,包含图像、文本、列表组和链接的复杂卡片结构
- 页眉和页脚 使用.card-header.card-footer类添加头部/底部区域
​调整尺寸​
- 使用网格标记 通过网格系统(如.row.col)控制卡片布局
- 使用实用程序 应用.w-75.w-50等宽度工具类调整卡片尺寸
- 自定义CSS 通过行内样式或自定义CSS设置固定宽度(如
​文本对齐方式​ 使用.text-start.text-center.text-end类控制内容对齐
​导航​ 在页眉中集成导航组件(如.nav-tabs/.nav-pills),需配合.card-header-tabs
​图片处理​
- 图像上限 图片作为独立元素置于卡片顶部/底部
- 图像叠加 使用.card-img-overlay在图片上方叠加文本内容
- 水平布局 通过网格实现横向排列(.row+图片列与内容列)
​卡片样式​
- 背景和颜色 使用.text-bg-{color}类组合设置背景色与文本对比色
- 边框 使用.border-{color}类自定义边框颜色
- Mixins utilities 通过.bg-transparent等工具类混合使用透明背景/边框样式
​卡片布局​
- 卡片组 使用.card-group创建等宽等高的卡片组
- 网格卡片 结合网格系统(.row-cols-*)创建响应式卡片布局
- 砌体布局 需使用Masonry插件实现瀑布流布局(非Bootstrap内置功能)
​CSS相关​
- 变量 通过CSS变量自定义间距、边框、颜色等属性(如--bs-card-spacer-y
- Sass变量 使用Sass变量(如$card-border-radius)深度定制卡片样式

5.8轮播

轮播(Carousel) · Bootstrap v5.3 (sbox.cn)

​知识点​ ​说明​ ​示例/关键点​
​工作原理​ 基于CSS 3D转换和JS构建,需手动初始化(构造函数或data-bs-ride属性) 同时使用data-bs-ride和构造函数初始化会冲突
​基本示例​ 包含轮播容器、轮播项、控制按钮的完整结构 <div >+carousel-inner+carousel-item active
​指示器​ 通过按钮标记添加幻灯片跳转点 <div >+data-bs-slide-to索引值
​字幕​ 在轮播项中添加带响应式隐藏的说明文字 <div >
​交叉淡入淡出​ 使用淡入淡出过渡效果替代滑动效果 添加carousel-fade类,可能需要bg-body背景色
​自动播放轮播​ 通过data-bs-ride属性控制自动播放 data-bs-ride="carousel"(立即启动) /data-bs-ride="true"(首次交互后启动)
​单个项目间隔​ 为特定幻灯片定义独立切换间隔 .carousel-item上使用data-bs-interval="毫秒值"(会覆盖全局设置)
​无控件自动播放​ 省略控制按钮的极简轮播 仅保留carousel-inner结构,仍需data-bs-ride属性
​禁用触摸滑动​ 禁用移动端滑动交互 添加data-bs-touch="false"属性
​深色变体​ 已弃用,改用颜色模式 使用data-bs-theme="dark"替代carousel-dark类(v5.3.0+)
​自定义过渡​ 通过Sass变量修改动画时间 $carousel-transition-duration: .6s;(需先定义transform过渡)
​CSS​ 关键样式类定义轮播布局 .carousel-inner(容器)、.carousel-item(项)、.active(激活状态)
​Sass变量​ 定制化设计参数 控制颜色($carousel-control-color)、指示器尺寸($carousel-indicator-width)等
​数据属性用法​ 通过HTML属性控制行为 data-bs-target(目标ID)、data-bs-slide(prev/next)、data-bs-interval(间隔)
​JavaScript初始化​ 编程式控制轮播实例 const carousel = new bootstrap.Carousel(element, { interval: 5000 })
​选项​ 配置轮播行为参数 interval(间隔)、keyboard(键盘控制)、pause(悬停暂停)、wrap(循环模式)、touch(触摸控制)等
​方法​ 控制轮播操作 cycle()(开始循环)、pause()(暂停)、to(index)(跳转)、dispose()(销毁实例)等
​事件​ 监听轮播状态变化 slide.bs.carousel(切换前触发)、slid.bs.carousel(切换后触发),含direction/from/to等事件参数

​5.9 关闭按钮

关闭按钮 · Bootstrap v5.3 (sbox.cn)

知识点 说明 属性/变量 注意事项
​禁用状态​ 禁用时降低透明度,禁用交互事件 disabled属性 opacitypointer-events: noneuser-select: none 需配合aria-label确保可访问性
​深色变体​ 通过主题切换关闭按钮颜色(默认白色) data-bs-theme="dark"(父元素或自身) filter属性 v5.3.0弃用.btn-close-white类,改用主题切换
​CSS变量​ 本地CSS变量实现动态样式控制(v5.3.0新增) --bs-btn-close-color --bs-btn-close-bg --bs-btn-close-opacity 变量值继承自Sass设置,支持实时自定义
​Sass变量​ 通过Sass变量定制关闭按钮基础样式 $btn-close-width(尺寸) $btn-close-color(颜色) $btn-close-bg(背景图) 需在编译前修改,如$btn-close-bg使用SVG数据URI

5.10 折叠

折叠(Collapse) · Bootstrap v5.3 (sbox.cn)

手风琴就是基于折叠做的。

​分类​ ​关键点​
​工作原理​ 通过切换类改变元素高度(默认)或宽度(水平)。动画依赖prefers-reduced-motion。不可在折叠元素上使用padding,需用独立包装元素。
​示例​ 使用<button><a>标签,需data-bs-toggle="collapse"+data-bs-target(按钮)或href(链接)指向目标元素的 ID。
​水平折叠​ 添加.collapse-horizontal类,子元素设置固定宽度(如width: 300px;)。需容器设置min-height避免布局问题。
​多个切换和目标​ 单个按钮/链接可控制多个元素(通过 CSS 选择器),多个按钮可控制同一元素。使用.multi-collapse类实现多元素同时切换。
​可访问性​ 必须为触发器添加aria-expanded表示状态,非按钮元素需加role="button"。目标元素需通过aria-controls关联 ID。
​CSS​ .collapse隐藏内容;.collapse.show显示内容;.collapsing处理过渡动画。
​Sass 变量​ $transition-collapse: height .35s ease; $transition-collapse-width: width .35s ease;
​类​ .collapse(隐藏)、.collapse.show(显示)、.collapsing(动画中)、.collapse-horizontal(水平模式)。
​用法(数据属性)​ 通过data-bs-toggle="collapse"+data-bs-target="#id"href="#id"触发。父级控制用data-bs-parent="#selector"(手风琴效果)。
​用法(JavaScript)​ 初始化:new bootstrap.Collapse(element, options)。可配置选项如parent(父级选择器)和toggle(初始状态)。
​选项​ parent: null(父级元素,用于关闭同级折叠) toggle: true(是否切换状态)。
​方法​ show()/hide()显示/隐藏元素 toggle()切换状态 dispose()销毁实例 getInstance()/getOrCreateInstance()获取或创建实例。
​事件​ show.bs.collapse(显示前) shown.bs.collapse(显示后) hide.bs.collapse(隐藏前) hidden.bs.collapse(隐藏后)。

5.11 下拉菜单

下拉菜单 · Bootstrap v5.3 (sbox.cn)

​分类​ ​知识点​ ​描述/关键点​
​概述​ 基础特性 基于 Popper 的动态定位,点击触发(非悬停),需包含 Popper JS 文件
​可访问性​ ARIA 标准 推荐使用role="menu",支持键盘导航(方向键、Esc 键)
​示例​ 单个按钮 使用.dropdown-toggle.dropdown-menu结构
拆分按钮 添加.dropdown-toggle-split类调整间距
调整尺寸 使用.btn-lg.btn-sm类控制按钮大小
深色下拉菜单(已弃用) 使用.dropdown-menu-dark(v5.3 后建议改用data-bs-theme="dark"
​方向​ 居中 .dropdown-center类使菜单居中
下拉方向 .dropup(向上)、.dropend(右)、.dropstart(左)类控制方向
下拉居中 .dropup-center向上居中显示菜单
​菜单项​ Active 状态 .active类 +aria-current="true/page"
禁用状态 .disabled类禁用交互
​菜单对齐​ 响应式对齐 data-bs-display="static"+.dropdown-menu-{breakpoint}-{start/end}
右对齐 .dropdown-menu-end类(RTL 模式下镜像)
​菜单内容​ 标题 使用<h6 >
分隔符 <hr >
文本段落 直接在.dropdown-menu中添加文本和间距工具类
表单 在菜单中嵌入表单控件,使用.px-4.py-3等内边距调整
​下拉选项​ 自动关闭行为 data-bs-auto-close="true/inside/outside/false"控制点击区域关闭行为
​CSS​ 变量 使用--bs-dropdown-*自定义颜色、间距、阴影等样式
Sass 变量 修改$dropdown-*变量定制主题(如$dropdown-min-width
Sass 混合 使用@mixin caret-*生成不同方向的下拉箭头
​用法​ 数据属性 data-bs-toggle="dropdown"触发菜单
JavaScript 初始化 new bootstrap.Dropdown(element, options)
Popper 配置 通过函数自定义popperConfig,合并默认配置
​方法​ 显示/隐藏/切换 .show().hide().toggle()方法控制菜单状态
更新位置 .update()动态调整菜单位置
​事件​ 交互事件 show.bs.dropdown(开始显示)、shown.bs.dropdown(显示完成)等生命周期事件

5.12 列表组

列表组 · Bootstrap v5.3 (sbox.cn)

知识点 说明 示例代码/类名
​基本示例​ 使用无序列表和.list-group基础结构 <ul ><li >
​活动项​ 通过.active类高亮当前选项 <li aria-current="true">
​禁用项​ .disabled类显示禁用状态 <li aria-disabled="true">
​链接和按钮​ 使用<a>/<button>+.list-group-item-action实现交互 <a >
​冲洗(Flush)​ 移除边框和圆角 <ul >
​编号​ 使用.list-group-numbered+<ol>生成序号 <ol >
​水平排列​ 响应式水平布局 .list-group-horizontal{-sm|md|lg|xl|xxl}
​变体​ 颜色上下文类 .list-group-item-primary.list-group-item-success
​带徽章​ 结合flex布局和徽章组件 <span >14</span>
​自定义内容​ 自由组合排版元素 使用d-flex+justify-content-between等工具类
​复选框/单选​ 内嵌表单控件 <input >+<label>
​CSS变量​ 自定义样式属性 --bs-list-group-bg--bs-list-group-active-color
​Sass变量​ 主题定制参数 $list-group-bg: var(--bs-body-bg);
​Sass混合​ 生成变体类(v5.3弃用) @mixin list-group-item-variant()
​Sass循环​ 自动生成颜色变体 @each $state in map-keys($theme-colors)
​JavaScript行为​ 实现选项卡功能 data-bs-toggle="list"
​淡入效果​ 添加过渡动画 <div >
​方法​ 控制选项卡的API show()dispose()getInstance()
​事件​ 选项卡切换触发事件 shown.bs.tabhidden.bs.tab

5.13 模态

模态(Modal) · Bootstrap v5.3 (sbox.cn)

​知识点​ ​说明​
​工作原理​ 基于 HTML/CSS/JS,使用position: fixed,不支持嵌套,移动端需注意渲染,禁用页面滚动,需自定义焦点逻辑。
​示例​ 静态模态结构包含modal-headermodal-body(必须带 padding)、modal-footer(可选)。
​模态组件​ 基础结构:<div >包含modal-dialogmodal-content,标题建议用<h1>
​现场演示​ 通过按钮的data-bs-toggle="modal"data-bs-target触发动态模态。
​静态背景​ 添加data-bs-backdrop="static"防止点击外部关闭,需手动关闭按钮。
​滚动长内容​ 自动视口滚动,或添加modal-dialog-scrollable类实现模态内部滚动。
​垂直居中​ modal-dialog添加modal-dialog-centered类实现垂直居中。
​工具提示和弹出框​ 模态内可放置 Tooltip/Popover,关闭模态时自动关闭其内部提示组件。
​使用网格​ modal-body内使用container-fluid和网格系统类(如rowcol-*)。
​不同的模态内容​ 通过event.relatedTargetdata-bs-*属性动态修改模态内容(如不同触发按钮显示不同信息)。
​在模态之间切换​ 通过data-bs-target指向不同模态 ID 实现切换(同一时间仅一个模态可见)。
​Change animation​ 修改 CSS 变量$modal-fade-transform$modal-show-transform自定义动画效果(如缩放)。
​删除动画​ 移除模态容器的.fade类禁用淡入动画。
​动态高度​ 模态高度变化时调用myModal.handleUpdate()重新计算位置。
​可及性​ 必须添加aria-labelledby关联标题,JS 自动添加role="dialog",支持prefers-reduced-motion
​嵌入优酷视频​ 需额外 JS 控制视频播放(非 Bootstrap 内置功能)。
​可选尺寸​ 通过类修饰符设置模态宽度:modal-sm(300px)、默认(500px)、modal-lg(800px)、modal-xl(1140px)。
​全屏模态​ 添加类如modal-fullscreen-sm-down实现断点响应式全屏覆盖。
​CSS 变量​ 支持动态自定义模态样式(如--bs-modal-width--bs-modal-bg)。
​Sass 变量​ 通过 Sass 变量(如$modal-md$modal-backdrop-opacity)深度定制样式。
​Sass loop​ 使用循环生成响应式全屏模态类(如不同断点下的modal-fullscreen-*-down)。
​用法​ 通过数据属性或 JavaScript 控制模态行为。
​通过数据属性切换​ 按钮设置data-bs-toggle="modal"data-bs-target="#id"触发模态。
​解除(Dismiss)​ 添加data-bs-dismiss="modal"到关闭按钮(内部或外部需配合data-bs-target)。
​通过 JavaScript​ 使用new bootstrap.Modal(element, options)创建实例,支持链式操作。
​选项​ 支持backdrop(true/static)、focus(自动聚焦)、keyboard(ESC 关闭)等选项。
​方法​ show()/hide()/toggle()控制显示,handleUpdate()调整动态高度,dispose()销毁实例。
​传递选项​ 可通过数据属性(data-bs-*)或构造函数传递选项(如{keyboard: false})。
​事件​ 生命周期事件:show.bs.modal(开始显示)、shown.bs.modal(显示完成)、hidePrevented.bs.modal等。

5.14 导航栏

导航栏 · Bootstrap v5.3 (sbox.cn)

​知识点​ ​核心内容​
​工作原理​ - 需要.navbar+ `.navbar-expand{-sm
​支持的内容​ .navbar-brand(品牌)、.navbar-nav(导航)、.navbar-toggler(折叠按钮)、.navbar-text(文本)、.navbar-collapse(折叠内容)
​品牌​ - 文本品牌直接使用.navbar-brand类 - 图像品牌用<img>标签替换文本 - 图像+文本需搭配.d-inline-block对齐
​导航​ - 基于.nav构建,需.nav-link修饰 - 支持下拉菜单(需嵌套结构) - 可脱离列表结构使用<div>实现导航
​表单​ - 使用.d-flex布局表单控件 - 支持输入框、按钮组 - 可结合.input-group实现复杂表单布局
​文本​ - 用.navbar-text包裹文本 - 自动垂直居中,支持与导航项混合排版
​配色方案​ - v5.3弃用.navbar-dark改用data-bs-theme="dark" - 通过.bg-*工具类设置背景色 - 深色模式需覆盖CSS变量
​容器​ - 外层可用.container.container-fluid - 响应式容器类(如.container-md)控制内容宽度
​放置​ - 定位类:fixed-topfixed-bottomsticky-top - 固定定位需添加body padding避免内容遮挡
​滚动​ - 添加.navbar-nav-scroll启用折叠内容滚动 - 通过--bs-scroll-height自定义滚动区域高度
​响应式行为​ - `.navbar-expand{-sm
​切换​ - 切换器位置自动右对齐(跟随.navbar-brand) - 可通过HTML顺序调整左右位置
​外部内容​ - 用data-bs-target控制外部容器折叠 - 需JavaScript辅助焦点管理 - 需添加aria-controls属性
​画布外​ - 结合Offcanvas组件实现侧边抽屉导航 - 深色主题需.text-bg-dark+.dropdown-menu-dark适配样式
​CSS变量​ 控制内边距(--bs-navbar-padding-x/y)、颜色(--bs-navbar-color)、切换器图标(--bs-navbar-toggler-icon-bg)等
​Sass变量​ 定义导航栏基础样式:$navbar-padding-y$navbar-brand-font-size$navbar-light-color
​Sass loop​ 通过循环生成.navbar-expand-*响应式类,自动应用flex布局和媒体查询断点

5.15 导航和选项卡

导航和选项卡 · Bootstrap v5.3 (sbox.cn)

类别 描述
​基本导航​ 使用.nav类构建Flexbox布局,支持活动状态(.active)和禁用状态(.disabled)。通过aria-current="page"增强辅助技术识别。支持<ul><ol><nav>容器。
​可用样式​ 通过修饰符类切换样式:.nav-tabs(选项卡)、.nav-pills(药片式)、.nav-underline(下划线)。
​水平对齐​ 使用Flexbox工具类:.justify-content-center(居中)、.justify-content-end(右对齐)。默认左对齐。
​垂直​ 添加.flex-column类实现垂直堆叠,支持响应式(如.flex-sm-column)。
​选项卡​ 使用.nav-tabs类,结合JavaScript实现动态内容切换。活动选项卡需添加.active类,禁用项用.disabled
​药片式(Pills)​ 使用.nav-pills类,样式为圆角按钮。活动状态高亮显示,禁用项同理。
​下划线​ 使用.nav-underline类,底部边框高亮当前选项卡。v5.3新增。
​填充和调整​ - ​​填充(Fill)​​:.nav-fill按比例分配空间,宽度不等。 - ​​等宽调整(Justify)​​:.nav-justified等宽分配。
​使用Flex实用程序​ 结合响应式Flex类实现布局,如.flex-sm-row(水平排列)和.flex-sm-fill(填充宽度)。例如:nav nav-pills flex-column flex-sm-row
​关于可访问性​ - 使用<nav>role="navigation"。 - 动态选项卡需正确使用role="tablist"role="tab"role="tabpanel"。 - 禁用选项卡需aria-disabled="true"
​使用下拉列表​ 在导航项内嵌套.dropdown-menu,通过.dropdown-toggle触发。
​带下拉的选项卡​ 选项卡中嵌入下拉菜单,结构为:.nav-tabs+.dropdown,需添加data-bs-toggle="dropdown"
​药片式下拉菜单​ 类似选项卡下拉,但使用.nav-pills样式。
​CSS变量​ v5.2+ 支持自定义变量,如--bs-nav-link-padding-x(水平内边距)、--bs-nav-tabs-border-color(选项卡边框颜色)等。
​Sass变量​ 通过Sass变量定制样式,如$nav-link-padding-y(垂直内边距)、$nav-pills-link-active-bg(药片式活动背景色)等。
​JavaScript行为​ 通过data-bs-toggle="tab"data-bs-toggle="pill"激活动态内容。需配合.tab-content.tab-pane
​使用数据属性​ 直接在HTML中通过data-bs-target="#id"指定关联的内容面板。
​通过JavaScript​ 手动初始化:new bootstrap.Tab(element),调用show()方法切换选项卡。
​淡入淡出效果​ .tab-pane添加.fade类,初始活动面板需同时有.show类(如.fade.show.active)。
​方法​ -show():激活选项卡。 -dispose():销毁实例。 -getInstance()/getOrCreateInstance():获取或创建实例。
​事件​ -show.bs.tab/shown.bs.tab:切换前/后触发。 -hide.bs.tab/hidden.bs.tab:隐藏前/后触发。通过event.relatedTargetevent.target访问新旧选项卡。

5.16 画布

画布外(Offcanvas) · Bootstrap v5.3 (sbox.cn)

Offcanvas 是一个侧边栏组件,可以通过 JavaScript 切换,使其从视口的左、右、上或下边缘显示。

分类 知识点 描述/特性 相关类/属性/方法
​工作原理​ 基本机制 侧边栏组件,通过JS触发显示/隐藏,共享模态框代码逻辑,动画支持减少运动设置 .offcanvas,data-bs-toggle="offcanvas",prefers-reduced-motion
​示例​ Offcanvas 组件 包含标题、关闭按钮和内容区的默认结构 .offcanvas-start.show,.offcanvas-header,.offcanvas-body
现场演示 通过按钮/链接触发显示,支持动态交互内容 data-bs-target,href, 嵌套下拉菜单
正文滚动 允许背景页面滚动 data-bs-scroll="true",data-bs-backdrop="false"
正文滚动+背景 同时启用背景和滚动 data-bs-scroll="true"(默认背景)
静态背景 点击外部不关闭 data-bs-backdrop="static"
深色 offcanvas v5.3弃用,改用颜色模式 .text-bg-dark,btn-close-white,data-bs-theme="dark"
​响应式​ 响应断点 根据视口尺寸自动隐藏/显示 .offcanvas-{sm/md/lg/xl/xxl}
​放置位置​ 定位方向 支持四个显示方向 .offcanvas-{start/end/top/bottom}
​可访问性​ ARIA 规范 必须包含标题关联,自动添加 dialog 角色 aria-labelledby="id", 自动添加role="dialog"
​CSS​ 变量 控制尺寸/颜色/动画等样式 --bs-offcanvas-width,--bs-offcanvas-bg,--bs-offcanvas-transition
Sass 变量 定义组件默认样式参数 $offcanvas-horizontal-width,$offcanvas-bg-color,$offcanvas-box-shadow
​用法​ 数据属性-切换 通过属性触发显示 data-bs-toggle="offcanvas",data-bs-target/href
数据属性-关闭 通过按钮关闭 data-bs-dismiss="offcanvas"
JavaScript 初始化 手动创建实例 new bootstrap.Offcanvas(element)
​选项​ backdrop 背景控制(true/static) 默认 true,static 时点击外部不关闭
keyboard Esc 键关闭 默认 true
scroll 允许背景滚动 默认 false
​方法​ show() 显示组件 返回 Promise,触发 shown 事件前返回
hide() 隐藏组件 返回 Promise,触发 hidden 事件前返回
toggle() 切换显示状态 根据当前状态自动切换
​事件​ show.bs.offcanvas 显示开始时触发 可用于预加载内容
shown.bs.offcanvas 显示动画完成时触发 可用于交互初始化
hide.bs.offcanvas 隐藏开始时触发 可用于保存状态
hidden.bs.offcanvas 隐藏动画完成时触发 可用于清理资源

5.17 分页

分页(Pagination) · Bootstrap v5.3 (sbox.cn)

​知识点​ ​要点​ ​注意事项​
​概述​ - 使用<nav>包裹无序列表<ul > - 必须添加aria-label描述导航用途(如aria-label="Search results pages"
- 通过<li ><a >构建分页链接 - 确保屏幕阅读器兼容性
​使用图标​ - 用<span aria-hidden="true">隐藏图标符号(如&laquo; - 必须为图标添加aria-label(如aria-label="Previous"
​禁用和活动状态​ -.disabled禁用不可点击项,.active高亮当前页 - 禁用项需加tabindex="-1"并移除href或改用<span>标签
- 活动项建议添加aria-current="page" - 禁用状态需配合JavaScript彻底禁用交互
​尺寸大小​ - 添加.pagination-lg.pagination-sm控制分页大小 - 影响内边距、字体大小和边框圆角
​对齐​ - 使用Flex工具类:.justify-content-center居中,.justify-content-end右对齐 - 直接应用在<ul >
​CSS变量​ - v5.2+支持,如--bs-pagination-color--bs-pagination-bg - 通过覆盖变量实时自定义颜色、背景、边框等样式
​Sass变量​ - 定义基础样式:$pagination-padding-x$pagination-font-size - 修改后需重新编译Bootstrap
​Sass mixins​ -@include pagination-size()调整分页尺寸(内边距、字体大小、圆角) - 用于自定义分页大小变体

5.18 占位符

占位符 · Bootstrap v5.3 (sbox.cn)

使用组件或页面的加载占位符来指示某些内容可能仍在加载,比如文字先不显示文字,先模糊显示。

​分类​ ​说明​
​示例​ 通过占位符替换卡片组件中的文本,使用.placeholder和网格类(如.col-6),并添加aria-hidden="true"隐藏屏幕阅读器。示例包含加载动画和禁用按钮的占位符。
​工作原理​ - 使用.placeholder类与网格列类(如.col-6)定义占位符宽度。 - 通过::before伪元素处理按钮高度,可添加&nbsp;占位空格保持高度。 - 需JavaScript切换可见性,并用aria-hidden控制辅助技术访问。
​宽度​ 支持三种方式调整宽度: 1. 网格类(如.col-6) 2. 实用类(如.w-75) 3. 内联样式(如)。
​颜色​ - 默认使用currentColor,可通过背景实用类覆盖: .bg-primary,.bg-secondary,.bg-success,.bg-danger,.bg-warning,.bg-info,.bg-light,.bg-dark
​尺寸大小​ 基于父元素排版,支持修饰符类: -.placeholder-lg(大) -.placeholder-sm(小) -.placeholder-xs(极小)。
​动画​ -.placeholder-glow:渐变发光效果。 -.placeholder-wave:波浪形动画。 将动画类添加到父元素(如<p>),子占位符自动继承。
​CSS​ 通过伪元素(如::before)处理占位符样式,例如按钮高度。占位符高度和颜色依赖父元素或自定义类。
​Sass变量​ 文档未明确列出,但通常包含以下变量: -$placeholder-color(颜色) -$placeholder-bg(背景色) -$placeholder-opacity(透明度) -$placeholder-height(基础高度) -$placeholder-animation-duration(动画时长)。

5.19 弹窗

弹出框 · Bootstrap v5.3 (sbox.cn)

知识点 描述
​概述​ 依赖 Popper 库进行定位,需在 Bootstrap 前引入;需手动初始化;标题和内容不能为空;建议设置container: 'body'避免渲染问题;禁用元素需通过包装元素触发。
​示例​ 通过data-bs-titledata-bs-content设置标题和内容;使用按钮触发弹出框。
​启用弹出框​ 通过 JavaScript 初始化: document.querySelectorAll('[data-bs-toggle="popover"]').forEach(el => new bootstrap.Popover(el))
​四个方向​ 使用data-bs-placement设置方向:top(默认)、rightbottomleft(RTL 布局下方向反转)。
​自定义 container​ 通过container选项指定父容器(如body.modal-body),解决样式冲突或模态框中的焦点问题。
​自定义弹出框​ 通过 CSS 变量覆盖样式: --bs-popover-max-width--bs-popover-header-bg等,配合data-bs-custom-class应用自定义类。
​下次单击时关闭​ 使用data-bs-trigger="focus",需用<a>标签并设置tabindex="0"
​禁用元素​ 通过包装元素(如<span>)触发禁用按钮的弹出框,设置data-bs-trigger="hover focus"tabindex="0"
​CSS 变量​ 支持通过变量自定义样式,如--bs-popover-border-color(边框颜色)、--bs-popover-body-padding-x(内边距)等。
​Sass 变量​ 提供 Sass 变量控制样式,如$popover-max-width(最大宽度)、$popover-header-bg(标题背景色)等。
​用法​ 通过new bootstrap.Popover(element, options)初始化;优先用于交互式元素(如按钮、链接)。
​选项​ 关键选项: -placement:定位方向 -trigger:触发方式(click/hover/focus/manual) -html:允许 HTML 内容 -delay:显示/隐藏延迟。
​将函数与 popperConfig​ 通过函数自定义 Popper 配置: popperConfig(defaultConfig) { return newConfig }
​方法​ 常用方法: -show()/hide():显示/隐藏 -toggle():切换状态 -dispose():销毁实例 -setContent():动态更新内容。
​事件​ 关键事件: -show.bs.popover:显示前触发 -shown.bs.popover:显示完成 -hide.bs.popover:隐藏前触发 -hidden.bs.popover:隐藏完成。

5.20 进度条

进度条(Progress) · Bootstrap v5.3 (sbox.cn)

知识点 实现方式 关键类/属性 注意事项
​工作原理​ 由外层.progress容器和内层.progress-bar元素构成 .progress作为包装器,.progress-bar作为视觉条 必须添加role="progressbar"aria属性确保可访问性;旧结构已弃用需迁移
​进度条尺寸​
- 宽度 通过工具类或内联样式设置.progress-bar的宽度 w-{数值}工具类(如w-75)或 宽度值需与aria-valuenow属性同步
- 高度 .progress容器上设置height属性 (直接定义外层容器高度) 内层.progress-bar自动适应容器高度
​标签​ .progress-bar内添加文本 直接在元素内写入文本(如<div >25%</div> 使用.overflow-visible.text-dark解决溢出问题;需保证颜色对比度
​背景​ 使用背景工具类修改颜色 .bg-{color}(如.bg-success)或.text-bg-{color}(组合类) 深色背景需搭配浅色文字(默认白色),浅色背景需手动添加.text-dark
​多个进度条​ 使用.progress-stacked包裹多个.progress容器 外层<div >,每个子项为独立.progress容器 ​宽度需设置在.progress容器上​​(而非.progress-bar
​条纹​ 添加条纹效果 .progress-bar-striped 需搭配背景颜色类使用(如.bg-success.progress-bar-striped
​动画条纹​ 为条纹添加动画 .progress-bar-animated 必须同时使用.progress-bar-striped;动画速度由$progress-bar-animation-timingSass变量控制
​CSS变量​ 通过 CSS 变量实时自定义样式(v5.2.0+) --bs-progress-height,--bs-progress-bg 变量定义在.progress容器上,覆盖时需注意层级
​Sass变量​ 通过 Sass 定制进度条样式 $progress-height,$progress-bg,$progress-bar-bg 修改后需重新编译 Bootstrap
​Keyframes​ 定义条纹动画效果(@keyframes progress-bar-stripes 包含在scss/_progress-bar.scss 仅在使用.progress-bar-animated时生效;依赖$enable-transitions配置

5.21 滚动

滚动(Scrollspy) · Bootstrap v5.3 (sbox.cn)

​分类​ ​关键点​
​工作原理​ - 当锚点对应的元素滚动到视图中时,在关联的导航元素上切换.active类 - 需要两个元素:导航组件(含锚点)和可滚动容器(需设置data-bs-spydata-bs-target) - 不可见的目标元素会被忽略
​示例​
- 导航栏 使用<nav><div data-bs-spy>结构,支持下拉菜单高亮
- 嵌套导航 嵌套的.nav激活时,父级也会激活.active
- 列表组 结合.list-group组件,滚动时高亮对应列表项
- 简单锚点 不限于导航组件,任何<a>元素均可使用
- 不可见元素 初始化后不可见的目标元素需调用refresh()方法更新
​用法​
- 通过数据属性 在可滚动容器添加data-bs-spy="scroll"data-bs-target="#navId"
- 通过 JavaScript 创建实例:new bootstrap.ScrollSpy(element, { target: '#navId' })
​选项​
-rootMargin string |0px 0px -25%
-smoothScroll boolean |false
-target string/Element |null
-threshold array |[0.1, 0.5, 1]
​方法​
-refresh() 更新 Scrollspy 实例以检测新元素
-dispose() 销毁实例
​事件​
activate.bs.scrollspy 当新锚点被激活时触发

​5.22 旋转(转圈圈)

微调器(Spinners) · Bootstrap v5.3 (sbox.cn)

​知识点​ ​描述​ ​示例/关键点​
​边框微调器​ 通过旋转边框实现加载动画的组件 <div role="status">...</div>
​颜色​ 使用文本颜色类(如text-primary)自定义颜色,依赖currentColor 避免使用border-color(部分边框为透明)
​增长微调器​ 通过缩放效果实现加载动画的组件 <div role="status">...</div>
​对齐​ 使用Flex、浮动或文本对齐工具控制微调器的位置
- ​​边距​ 使用边距工具类(如m-5)调整间距 <div >...</div>
- ​​放置​ 通过Flex布局、浮动或文本对齐实现精准定位
- ​​Flex​ 使用Flex工具居中或对齐微调器 <div >...</div>
- ​​浮动​ 使用浮动工具(如float-end)定位 <div >...</div>
- ​​文本对齐​ 通过文本对齐工具(如text-center)居中 <div >...</div>
​大小​ 使用.spinner-border-sm或自定义CSS调整尺寸 <div >...</div>
​按钮​ 在按钮内集成微调器,需禁用按钮并添加辅助文本 <button disabled><span >...</button>
​CSS变量​ 通过CSS变量动态控制微调器样式(如宽度、动画速度) --spinner-width: 3rem;(覆盖默认值)
​Sass变量​ 通过Sass变量全局修改微调器参数(如尺寸、边框宽度) $spinner-width: 2rem;(需重新编译)
​Keyframes​ 定义动画关键帧(spinner-border旋转,spinner-grow缩放) @keyframes spinner-border { to { transform: rotate(360deg); } }

5.23 通知

Toasts · Bootstrap v5.3 (sbox.cn)

​知识点​ ​关键描述​
​概述​ Toast是轻量级通知,需手动初始化(性能优化)。默认自动隐藏(autohide: true),动画支持prefers-reduced-motion媒体查询。
​基本示例​ 必须包含关闭按钮(data-bs-dismiss="toast"),建议使用toast-headertoast-body结构。默认位置需通过CSS或工具类调整(如position-fixed)。
​现场示例​ 使用JavaScript触发显示:bootstrap.Toast.getOrCreateInstance(element).show(),通过按钮点击事件绑定。
​半透明​ 通过默认的CSS背景透明度实现(background-color: rgba(var(--body-bg-rgb), .85)),与下层内容融合。
​堆叠​ 将多个Toast包裹在toast-container中,容器会自动添加垂直间距。使用position-static保持容器在文档流中。
​自定义内容​ 可删除toast-header,使用Flex工具类(如align-items-center)调整布局,或添加额外按钮/控件(需处理交互冲突)。
​配色方案​ 使用text-bg-{color}类修改背景色,btn-close-white适配深色背景。移除边框用border-0
​放置​ 通过工具类定位(如top-0 end-0右上角),或用Flex居中(d-flex justify-content-center align-items-center)。
​可访问性​ 必须包含role="alert"role="status"aria-live区域(assertive/polite)、aria-atomic="true"。非自动隐藏时需关闭按钮。
​CSS变量​ 新增v5.2.0,支持动态样式(如--bs-toast-zindex--bs-toast-max-width)。覆盖默认值需通过行内样式或自定义CSS。
​Sass变量​ 通过Sass修改默认值,如$toast-max-width: 350px$toast-background-color控制半透明背景。
​用法​ 初始化方式:new bootstrap.Toast(element, options)或批量初始化querySelectorAll
​触发器​ 关闭按钮需设置data-bs-dismiss="toast",外部按钮需额外指定data-bs-target="#toast-id"
​选项​ animation(动画开关)、autohide(自动隐藏)、delay(隐藏延迟,默认5000ms)。可通过data-bs-*属性或JSON配置。
​方法​ show()显示、hide()隐藏、dispose()销毁实例、isShown()检查状态。使用静态方法getInstance()获取实例。
​事件​ 生命周期事件:show.bs.toast(显示前)、shown.bs.toast(显示后)、hide.bs.toast(隐藏前)、hidden.bs.toast(隐藏后)。

5.24 工具提示

工具提示 · Bootstrap v5.3 (sbox.cn)

将鼠标悬停在链接上以查看工具提示。

​知识点​ ​说明​
​概述​ - 依赖 Popper.js 库,需在 Bootstrap.js 前引入 - 需手动初始化工具提示 - 标题为空时不显示,建议设置container: 'body' - 禁用元素需通过外层元素触发,支持 Shadow DOM
​示例​ - 使用data-bs-toggle="tooltip"data-bs-title定义工具提示 - 支持在链接、按钮等元素上使用 - 提供自定义样式和 HTML 内容的示例
​启用工具提示​ 初始化代码: document.querySelectorAll('[data-bs-toggle="tooltip"]').forEach(el => new bootstrap.Tooltip(el))
​链接上的工具提示​ <a>标签添加data-bs-toggle="tooltip"data-bs-title(或title属性)
​自定义工具提示​ 使用data-bs-custom-class指定自定义类,通过 CSS 变量覆盖样式: .custom-tooltip { --bs-tooltip-bg: var(--bs-primary); }
​方向​ 支持top/right/bottom/left,RTL 布局自动反转方向
​CSS 变量​ 控制外观的核心变量: ---bs-tooltip-bg(背景色) ---bs-tooltip-color(文字色) ---bs-tooltip-font-size(字体大小)等(v5.2.0+)
​Sass 变量​ 通过 Sass 配置: -$tooltip-max-width: 200px -$tooltip-bg(背景色) -$tooltip-arrow-width(箭头尺寸)等
​用法​ - 动态生成工具提示 DOM - 支持通过boundary选项处理溢出问题 - 示例:new bootstrap.Tooltip(element, { boundary: document.body })
​标记​ 生成的结构: <div role="tooltip"><div ></div><div >内容</div></div>
​禁用的元素​ 禁用按钮需包裹元素并添加tabindex="0"<span tabindex="0" data-bs-toggle="tooltip">...<button disabled></button></span>
​选项​ 关键配置: -placement: 位置(默认top) -html: 允许 HTML 内容 -trigger: 触发方式(默认hover focus) -delay: 延迟显示/隐藏
​将函数与 popperConfig 使用​ 自定义 Popper 配置: new Tooltip(el, { popperConfig(defaultConfig) { return { ...defaultConfig, modifiers: [...] } } })
​方法​ -show()/hide()/toggle(): 控制显示 -dispose(): 销毁实例 -getInstance(): 获取实例 -setContent(): 动态更新内容
​Events​ -show.bs.tooltip/shown.bs.tooltip(显示前/后) -hide.bs.tooltip/hidden.bs.tooltip(隐藏前/后) -inserted.bs.tooltip(模板插入 DOM 后)

6、助手

6.1 清除修复

清除修复(Clearfix) · Bootstrap v5.3

​知识点​ ​说明​
​功能​ 清除父容器内的浮动内容,防止因浮动元素导致的高度塌陷问题。
​使用方法(HTML)​ 在父元素上添加.clearfix类: <div >...</div>
​使用方法(SCSS)​ 通过混合宏@include clearfix引入: .element { @include clearfix; }
​实现原理​ 在父元素的::after伪元素中插入一个块级元素,并清除浮动: display: block; clear: both; content: "";
​使用场景​ 父容器包含浮动元素(如使用.float-start.float-end的元素)时,确保父容器正确包裹子元素。
​示例代码​ html <div > <button >左浮动按钮</button> <button >右浮动按钮</button> </div>
​版本支持​ 适用于 Bootstrap v5.3 及以上版本,混合宏需在 SCSS 编译环境中使用。

6.2 颜色和背景

颜色和背景 · Bootstrap v5.3

​知识点​ ​详细说明​
​功能​ 通过合并.text-*.bg-*类,自动计算背景色与文本对比色,简化样式定义。
​类名格式​ .text-bg-{color},支持颜色:primary,secondary,success,danger,warning,info,light,dark
​实现原理​ 使用 Sass 的color-contrast()函数动态计算对比文本色(非 CSS 原生实现)。
​使用场景​ 适用于徽章(Badge)、卡片(Card)等组件,替代原有组合类(如.text-primary + .bg-primary)。
​示例代码​ <div >...</div> <span >Info</span>
​自定义颜色问题​ 若通过 CSS 变量修改主题颜色,可能导致对比度异常,需手动检查。
​辅助功能要求​ 颜色不可作为唯一信息源,需确保内容本身明确,或用.visually-hidden类补充隐藏文本。
​对比度优化​ 自动根据背景色选择高对比度文本色(如深背景用白色文字,浅背景用黑色文字)。

6.3 链接颜色

彩色链接(Colored links) · Bootstrap v5.3

​类别​ ​类名/用法​ ​描述​ ​注意事项​
​链接颜色​ .link-primary,.link-secondary,.link-success,.link-danger,.link-warning,.link-info,.link-light,.link-dark 为链接设置主题颜色,包含:hover:focus状态。 浅色主题下部分颜色(如.link-light)需搭配深色背景以保证对比度。
​特殊链接颜色​ .link-body-emphasis 高对比度链接,自动适配当前颜色模式(浅色/深色)。 目前唯一支持颜色模式适配的链接类,v6前为特殊实现,hover下划线透明度默认为75%
​下划线偏移​ .link-offset-{1-3} 调整链接下划线与文本的偏移距离(如.link-offset-2增加偏移)。 数值越大,偏移距离越远。
​下划线透明度​ .link-underline-opacity-{25,50,75,100} 设置默认状态下链接下划线的透明度(如25表示25%透明度)。 需与其他链接类(如颜色类)组合使用。
​悬停下划线​ .link-underline-opacity-{25,50,75,100}-hover 设置hover状态下链接下划线的透明度(如.link-underline-opacity-100-hover)。 通常与默认透明度类搭配,但.link-body-emphasishover透明度为75%
​辅助功能提示​ 结合.visually-hidden类或显式文本 确保链接含义不依赖颜色,对屏幕阅读器友好。 避免仅用颜色传递信息,需补充隐藏文本或明确上下文。

6.4 聚焦环

焦点环(Focus ring) · Bootstrap v5.3

​知识点​ ​描述与示例​
​示例​ 使用.focus-ring类替换默认outline,通过box-shadow实现可自定义的焦点环效果。 示例代码: <a href="#" >Custom focus ring</a>
​自定义​ 支持通过以下方式自定义焦点环: - CSS 变量(全局或局部覆盖) - Sass 变量(全局配置) - 实用程序类(预定义颜色) - 直接编写 CSS 样式
​CSS 变量​ 可修改的变量: ---bs-focus-ring-color:焦点环颜色(默认基于主题色) ---bs-focus-ring-x:水平偏移(默认0) ---bs-focus-ring-y:垂直偏移(默认0) ---bs-focus-ring-blur:模糊半径(默认0) 示例:内联样式修改<a >
​Sass​ 通过 Sass 变量全局配置: -$focus-ring-width:焦点环宽度(默认0.25rem) -$focus-ring-opacity:透明度(默认0.25) -$focus-ring-color:颜色(默认rgba($primary, $opacity)) -$focus-ring-blur:模糊半径(默认0
​Utilities​ 预定义的实用程序类: -.focus-ring-{color}(如focus-ring-primaryfocus-ring-success等) 直接应用主题色到焦点环,示例: <a >Danger focus</a>

6.5 图标链接(Icon link)

图标链接(Icon link) · Bootstrap v5.3

知识点 描述 示例/用法
​示例​ 基础图标链接结构,图标自动调整大小和位置 <a > <svg>图标</svg> 文字 </a><a >文字 <svg>图标</svg></a>
​悬停样式​ 添加.icon-link-hover类实现悬停图标动画效果 <a >文字 <svg>→图标</svg></a>(默认右移动画)
​CSS 变量​ 通过 CSS 变量覆盖默认样式: •--bs-icon-link-transform(悬停动画) •--bs-link-*(颜色)
​Sass​ 通过 Sass 变量全局修改样式: •$icon-link-gap: .375rem(图标文字间距) •$icon-link-underline-offset: .25em(下划线偏移) •$icon-link-icon-transform(悬停动画参数) 在 Sass 中定义变量后重新编译
​Utilities​ 使用实用类快速修改样式: • 颜色:link-success • 下划线:link-underline-success • 透明度:link-underline-opacity-25 <a >...</a>

6.6 位置

位置 · Bootstrap v5.3

​类名​ ​功能描述​ ​行为特点​ ​响应式支持​ ​注意事项​
fixed-top 将元素固定在视口顶部(边缘到边缘) 始终可见,脱离文档流 无(全局生效) 可能需要添加padding-top避免内容被遮挡
fixed-bottom 将元素固定在视口底部(边缘到边缘) 始终可见,脱离文档流 无(全局生效) 可能需要添加padding-bottom避免内容被遮挡
sticky-top 元素在滚动经过后粘在视口顶部 初始在文档流中,滚动触发后固定 无(全局生效) 需确保父容器有足够高度,否则无法触发粘性效果
sticky-sm-top 在 ​​SM(≥576px)​​ 及以上视口粘在顶部 响应式断点控制固定行为 ✅ 支持 SM/MD/LG/XL/XXL 断点后缀(如sticky-md-top 需根据实际屏幕尺寸设计布局
sticky-md-top 在 ​​MD(≥768px)​​ 及以上视口粘在顶部
sticky-lg-top 在 ​​LG(≥992px)​​ 及以上视口粘在顶部
sticky-xl-top 在 ​​XL(≥1200px)​​ 及以上视口粘在顶部
sticky-xxl-top 在 ​​XXL(≥1400px)​​ 及以上视口粘在顶部
sticky-bottom 元素在滚动经过后粘在视口底部 初始在文档流中,滚动触发后固定 无(全局生效) 较顶部更少使用,需精确控制滚动容器高度
sticky-sm-bottom 在 ​​SM(≥576px)​​ 及以上视口粘在底部 响应式断点控制固定行为 ✅ 支持 SM/MD/LG/XL/XXL 断点后缀(如sticky-md-bottom 需测试不同设备下的滚动行为
sticky-md-bottom 在 ​​MD(≥768px)​​ 及以上视口粘在底部
sticky-lg-bottom 在 ​​LG(≥992px)​​ 及以上视口粘在底部
sticky-xl-bottom 在 ​​XL(≥1200px)​​ 及以上视口粘在底部
sticky-xxl-bottom 在 ​​XXL(≥1400px)​​ 及以上视口粘在底部

6.7 比例

比率(Ratios) · Bootstrap v5.3

​类别​ ​描述​ ​示例/用法​ ​注意事项​
​示例​ 使用比率类包裹嵌入内容,自动调整子元素尺寸 <div ><iframe ...></div> 父元素需添加.ratio及比例类,子元素无需设置frameborder(Bootstrap已覆盖)
​纵横比​ 预定义的宽高比类,通过CSS变量实现 .ratio-1x1(100%) .ratio-4x3(75%) .ratio-16x9(56.25%) .ratio-21x9(42.86%) 比例计算方式为:高度百分比 = (分母/分子) * 100%(如16x99/16 * 100%
​自定义比率​ 通过覆盖--bs-aspect-ratio变量自定义任意比例,支持响应式断点调整 <div >(2x1) 结合媒体查询断点调整比例 自定义值需为百分比形式;响应式需使用Sass的media-breakpoint-up等混合宏
​Sass映射​ 通过修改$aspect-ratios变量扩展或修改默认比例类,需重新编译Sass生效 $aspect-ratios: ("2x1": 50%, "3x2": calc(2/3 * 100%)); 映射键名需符合格式(如"4x3"),值需为有效CSS计算表达式;修改后需重新编译以生成新类

6.8 栈(Stacks)

栈(Stacks) · Bootstrap v5.3

​类型​ ​描述​ ​示例​ ​CSS​
​垂直 (vstack)​ 使用.vstack创建垂直布局,默认全宽,通过.gap-*控制间距。 按钮垂直堆叠: <div > <button>Save</button> <button>Cancel</button> </div> .vstack { display: flex; flex-direction: column; align-self: stretch; flex: 1 1 auto; }
​水平 (hstack)​ 使用.hstack创建水平布局,默认垂直居中且宽度自适应,通过.gap-*.ms-auto调整间距,支持.vr分隔线。 内联表单: <div > <input> <button>Submit</button> <div ></div> <button>Reset</button> </div> .hstack { display: flex; flex-direction: row; align-items: center; align-self: stretch; }

6.9 延伸链接

延伸链接(Stretched link) · Bootstrap v5.3

​知识点​ ​说明​ ​示例/注意事项​
​定义与作用​ 通过添加.stretched-link类,使链接的::after伪元素覆盖整个包含块,实现区域点击。 适用于卡片等组件,提升用户体验。
​使用方法​ 1. 为链接添加.stretched-link类。 2. ​​包含块​​需设置position: relative - 卡片默认有position: relative,可直接使用。 - 自定义组件需手动添加.position-relative
​包含块条件​ 满足以下任一条件即为包含块: 1.positionstatic。 2.transform/perspectivenone。 3.will-change涉及transform/perspective。 4.filternone(仅Firefox)。 示例:段落设置transform: rotate(0)会成为包含块,链接仅覆盖该段落。
​限制与兼容性​ 1. 避免与表格元素混用(布局冲突)。 2. 多个延伸链接需调整positionz-index 不推荐多个延伸链接,但可通过样式解决层级冲突。
​常见问题​ 1. 链接自身设置position: relative会破坏覆盖逻辑。 2. 包含块未正确设置导致失效。 示例:链接自身添加position: relative会导致伪元素无法延伸到父级。
​默认支持组件​ Bootstrap 卡片(.card)默认支持,无需额外设置。 卡片内链接可直接使用.stretched-link
​自定义组件适配​ 需手动为父容器添加.position-relative 示例:自定义布局需<div >

6.10 文本截断

文本截断 · Bootstrap v5.3

属性/类名 说明 应用场景 示例代码 注意事项
.text-truncate 添加省略号截断长文本 通用 <div >长文本内容...</div> 需设置父容器为display: blockdisplay: inline-block
​块级元素应用​ 结合网格系统限制宽度 块级容器 <div > <div >长文本...</div> </div> 通过网格列(如.col-2)控制宽度
​内联元素应用​ 需强制内联块显示并手动限制宽度 行内元素 <span >长文本...</span> 必须设置max-width(如通过行内样式或CSS类)才能生效
​依赖的CSS属性​ 自动应用以下样式: 底层实现 css overflow: hidden; text-overflow: ellipsis; white-space: nowrap; 无需手动编写,由Bootstrap类自动实现

6.11 垂直规则

垂直线 · Bootstrap v5.3

​知识点​ ​要点说明​
​工作原理​ - 基于<hr>元素设计,作为垂直分隔线 - 默认样式:宽度1px、min-height: 1em - 颜色通过currentColor继承父级文本颜色,并应用透明度(opacity) - 可通过自定义CSS覆盖默认样式
​基础示例​ - 基础用法:<div ></div> - 在弹性容器(.d-flex)中自动填充高度: html<br> <div ><br> <div ></div><br> </div>
​带堆栈的示例​ - 在水平堆栈(.hstack)中垂直分隔: html<br> <div ><br> <div >First item</div><br> <div >Second item</div><br> <div ></div><br> <div >Third item</div><br> </div> - 关键点: -.ms-auto使第二个元素右对齐 -.gap-3控制堆栈子项间距 -.vr在水平布局中显示为垂直分隔线

6.12 视觉隐藏

视觉隐藏 · Bootstrap v5.3

​类/Mixin​ ​用途​ ​应用场景​ ​用法示例​ ​注意事项​
.visually-hidden 在视觉上隐藏元素,但仍对辅助技术(如屏幕阅读器)可见。 隐藏仅用于屏幕阅读器的内容(如标题、标签)。 <h2 >标题仅对屏幕阅读器可见</h2> 元素不会在页面上占据空间,不可通过键盘聚焦。
.visually-hidden-focusable 默认视觉隐藏,但元素或其子元素获得焦点时显示(如键盘导航用户)。 创建跳过导航链接或隐藏但可聚焦的交互元素。 <a href="#content">跳过导航</a> 需结合:focus:focus-within实现动态显示,适用于容器或可聚焦元素。
​混合使用​ 结合.visually-hidden.visually-hidden-focusable实现复杂需求。 动态切换视觉隐藏状态(如隐藏文本在聚焦时显示)。 <button >隐藏按钮</button> 需注意 CSS 层叠顺序,避免样式冲突。
​Mixin 用法​ 通过 SCSS 自定义类名复用视觉隐藏逻辑。 保持代码一致性或扩展视觉隐藏功能。 .custom-hidden { @include visually-hidden; } 需在 Bootstrap 的 SCSS 环境下使用,依赖其变量和函数。

7、实用工具

7.1 API

Utility API · Bootstrap v5.3

知识点 定义/作用 配置选项/示例
​属性 (Property)​ 指定CSS属性名,可以是字符串或数组 property: opacityproperty: (margin, padding)
​值 (Values)​ 属性允许的值,支持列表或映射格式 列表:values: none underline 映射:values: (0: 0, 25: .25)
​类 (Class)​ 自定义生成类名的前缀 class: o生成.o-25 class: null直接使用值作为类名(如.visible
​CSS变量实用程序​ 生成CSS变量而非常规CSS规则 css-var: true css-variable-name: text-alpha生成--bs-text-alpha
​本地CSS变量​ 在规则内生成局部CSS变量 local-vars: ("bg-opacity": 1)生成--bs-bg-opacity
​状态 (State)​ 生成伪类变体(如:hover) state: hover生成.opacity-hover:hover 多状态:state: hover focus
​响应 (Responsive)​ 生成响应式断点类 responsive: true生成.opacity-md-25等响应类
​打印 (Print)​ 生成打印媒体查询类 print: true生成.opacity-print-25
​重要性​ 控制是否添加!important 全局变量$enable-important-utilities(默认true)
​覆盖实用程序​ 替换现有实用程序配置 通过相同键名覆盖:map-merge($utilities, ("overflow": new-config))
​添加实用程序​ 新增自定义实用程序 使用map-merge添加新键:cursor: (property: cursor, values: auto pointer)
​修改实用程序​ 调整已有实用程序配置 嵌套使用map-getmap-merge修改values等参数
​启用响应式​ 为现有实用程序添加响应式支持 设置responsive: true,如修改border实用程序
​重命名实用程序​ 修改生成的类名前缀 修改class: ml将margin-start实用程序类名改为.ml-*
​删除实用程序​ 移除默认实用程序 map-remove($utilities, "width")或设置键值为null
​添加、删除、修改​ 批量操作实用程序 在单个map-merge中组合多个操作
​删除RTL中的实用程序​ 从RTL布局中排除特定实用程序 设置rtl: false,配合RTLCSS指令/* rtl:remove */

7.2 背景

背景 · Bootstrap v5.3

​知识点​ ​关键内容​
​背景色​ - 使用.bg-*类(如.bg-primary)设置元素背景色 - ​​注意事项​​:颜色不自动设置文本颜色,需搭配.text-*工具类 -.bg-*-subtle类响应颜色模式(如浅色/深色主题),普通.bg-*类在 v5.3 中不响应(v6 修复)
​背景渐变​ - 添加.bg-gradient类为元素背景添加半透明渐变效果 - 自定义 CSS 可通过background-image: var(--bs-gradient);调用渐变变量
​不透明度​ - 通过覆盖--bs-bg-opacityCSS 变量调整透明度(默认 1) - 提供预定义透明度类:.bg-opacity-10(10%)、.bg-opacity-25(25%)、.bg-opacity-50(50%)、.bg-opacity-75(75%)、.bg-opacity-100(100%)
​工作原理​ - 背景色通过rgba(var(--bs-{color}-rgb), var(--bs-bg-opacity))动态生成 - 每个.bg-*类定义局部 CSS 变量--bs-bg-opacity,避免嵌套继承问题
​示例​ html<br><div >默认背景</div><br><div >50% 透明度</div><br><div >内联调整透明度</div>
​CSS​ - 使用 CSS 变量(如--bs-primary-rgb)动态控制颜色值 - 背景渐变变量:--bs-gradient
​Sass 变量​ - 主题颜色变量:$primary: $blue$secondary: $gray-600等 - 灰度变量:$gray-100$gray-900 - 渐变变量:$gradient: linear-gradient(180deg, rgba($white, .15), rgba($white, 0))
​Sass 映射​ -$theme-colors:包含主要主题颜色(primary、secondary 等) -$grays:包含灰度颜色(未生成实用程序) -$utilities-bg:合并 RGB 颜色生成工具类
​Sass Mixins​ - 渐变生成混入: -.gradient-x()(水平渐变) -.gradient-y()(垂直渐变) -.gradient-radial()(径向渐变) -.gradient-striped()(条纹渐变)
​实用程序 API​ - 在scss/_utilities.scss中定义: -"background-color"生成.bg-*类 -"bg-opacity"生成透明度工具类 -"subtle-background-color"生成.bg-*-subtle

7.3 边框

边框 · Bootstrap v5.3

知识点 类名/变量 描述 应用方式
​添加​ .border,.border-top,.border-end,.border-bottom,.border-start 添加全边框或指定方向边框 <span ></span>
​删除​ .border-0,.border-top-0,.border-end-0 移除全部或指定方向边框 <span ></span>
​颜色​ .border-primary,.border-success-subtle 使用主题颜色设置边框颜色,*-subtle类支持颜色模式响应 <div ></div>
​不透明度​ --bs-border-opacity,.border-opacity-50 通过 CSS 变量或预定义类(10/25/50/75/100)调整透明度 <div ><div >
​工作原理​ CSS 变量rgba(var(--bs-success-rgb), var(--bs-border-opacity)) 动态计算颜色和不透明度,避免继承问题 自动应用于.border-*
​宽度​ .border-1.border-5 设置边框宽度(1px 到 5px) <span ></span>
​圆角(Radius)​ .rounded,.rounded-top,.rounded-circle,.rounded-pill 添加全角或指定方向圆角,支持圆形(50%)和胶囊形状 <img >
​大小​ .rounded-0.rounded-5 控制圆角大小(0 无圆角,5 最大) <div ></div>
​CSS 变量​ --bs-border-width,--bs-border-color,--bs-border-radius 动态控制边框样式的基础变量 通过var(--bs-border-width)引用
​Sass 变量​ $border-width,$border-radius-lg,$primary-border-subtle 定义边框宽度、样式、颜色等基础参数 通过修改scss/_variables.scss自定义
​Sass 映射​ $theme-colors-border-subtle,$theme-colors-border-subtle-dark 存储明/暗模式下的半透明边框颜色 用于生成响应式颜色类
​Sass mixins​ @mixin border-radius(),@mixin border-top-radius() 快速生成圆角样式的混合宏 在自定义组件中调用@include border-radius($radius)
​实用程序 API​ "border","rounded"等配置项 通过 Sass 工具生成边框相关 CSS 类 修改scss/_utilities.scss中的属性映射来扩展或自定义类

7.4 颜色

颜色 · Bootstrap v5.3

​知识点​ ​说明​
​颜色​ - 提供.text-primary,.text-success等基于主题色的文本颜色类。 - 强调色类(如.text-primary-emphasis)支持颜色模式响应(明/暗)。 -.text-black-50,.text-white-50,.text-muted已弃用。
​不透明度​ - 通过 CSS 变量--bs-text-opacity控制透明度(默认1)。 - 使用.text-opacity-25,.text-opacity-50等类或内联样式覆盖变量。
​工作原理​ - 颜色类使用rgba(var(--bs-primary-rgb), var(--bs-text-opacity))格式,结合 RGB 变量和透明度变量动态计算颜色。
​示例​ - 内联样式:<div > - 使用类:<div >
​特异性​ - 遇到样式冲突时,用<div>包裹内容并应用类,以提升特异性。
​CSS​ - 使用 CSS 变量(如--bs-primary-rgb)动态定义颜色。 -.text-*-emphasis类通过变量适配颜色模式。
​Sass 变量​ - 主题色变量:$primary,$success等。 - 强调色变量:$primary-text-emphasis(亮模式用shade-color(),暗模式用tint-color())。 - 灰度变量:$gray-100$gray-900
​Sass 映射​ -$theme-colors: 主题色映射,用于生成颜色类。 -$grays: 灰度色映射。 -$theme-colors-rgb: 主题色的 RGB 值映射,用于透明度计算。
​实用程序 API​ - 在scss/_utilities.scss中定义,通过循环$theme-colors生成颜色类。 -text-opacity类提供25,50,75,100四个透明度级别。

7.5 Display属性

Display 属性 · Bootstrap v5.3

​知识点​ ​说明​
​工作原理​ - 通过响应式显示工具类修改元素的display属性,支持部分属性值。 - 使用媒体查询基于断点系统(sm-xxl),如.d-lg-none在lg及以上屏幕生效。 - xs断点(默认)无缩写,类名从min-width: 0开始应用。
​表示法​ - 类名结构: -.d-{value}:适用于所有屏幕(xs及以上)。 -.d-{breakpoint}-{value}:指定断点(sm, md, lg, xl, xxl)。 -value可为noneinlineblockgridflex等。
​示例​ -.d-inline:元素显示为内联。 -.d-block:元素显示为块级。 (示例中通过<div><span>展示效果)
​隐藏元素​ - 使用.d-none隐藏元素,或结合断点类(如.d-md-none)在特定屏幕隐藏。 - 组合类实现响应式显示,如.d-none.d-md-block.d-xl-none在md-lg显示,其他隐藏。 - 示例:.d-lg-none隐藏lg及以上,.d-none.d-lg-block隐藏lg以下。
​打印显示​ - 使用.d-print-{value}控制打印显示(如.d-print-block)。 - 可组合屏幕类: -.d-print-none:打印时隐藏。 -.d-none.d-print-block:屏幕隐藏,打印显示块。
​Sass​ - 通过修改SCSS变量$utilities中的display值,自定义支持的属性值,需重新编译生效。
​实用程序API​ - 在scss/_utilities.scss中定义,配置参数包括: -responsive: true:支持响应式断点。 -print: true:支持打印类。 -property: display:对应CSS属性。 -class: d:类名前缀。 -values:支持的属性值列表(如noneinlineblock等)。

7.6 Flex属性

弹性(Flex) · Bootstrap v5.3

知识点 类/属性 作用描述 响应式支持
​启用Flex行为​ .d-flex,.d-inline-flex 创建弹性容器(块级/行内) 是(如.d-sm-flex
​方向​ .flex-row,.flex-row-reverse,.flex-column,.flex-column-reverse 控制主轴方向(水平/垂直及其反向) 是(如.flex-md-row
​两端对齐内容​ .justify-content-{start/end/center/between/around/evenly} 控制主轴方向的对齐方式(如居中、两端对齐等) 是(如.justify-lg-center
​对齐项​ .align-items-{start/end/center/baseline/stretch} 控制交叉轴方向的整体对齐方式 是(如.align-items-md-end
​自我对齐​ .align-self-{start/end/center/baseline/stretch} 单独控制某个 flex 项在交叉轴的对齐方式 是(如.align-self-xl-center
​填充(Fill)​ .flex-fill 强制子元素等宽,填充可用空间 是(如.flex-xl-fill
​增长和收缩​ .flex-grow-{0/1},.flex-shrink-{0/1} 控制元素是否扩展(grow)或收缩(shrink)以适应空间 是(如.flex-lg-grow-0
​自动边距​ .me-auto,.ms-auto 通过左右外边距自动分配空间(常用于左右对齐)
​使用对齐项​ .align-items-*+.flex-column 结合垂直布局和自动边距实现复杂对齐(如顶部/底部固定)
​包装(Wrap)​ .flex-nowrap,.flex-wrap,.flex-wrap-reverse 控制换行方式(不换行/换行/反向换行) 是(如.flex-md-wrap
​排序(Order)​ .order-{0-5},.order-first,.order-last 调整元素的视觉顺序(数字越小越靠前,默认 DOM 顺序) 是(如.order-md-2
​对齐内容​ .align-content-{start/end/center/between/around/stretch} 多行内容在交叉轴的对齐方式(仅对多行生效) 是(如.align-content-xl-between
​媒体对象​ .flex-shrink-0+.flex-grow-1 经典媒体布局(左侧固定图片,右侧自适应内容)
​Sass 实用程序 API​ scss/_utilities.scss 通过 Sass 变量和 mixin 自定义 flex 类(如flex-directionjustify-content等) 是(响应式配置)
​实用程序 API​ property: flex-direction,values: row/column... 生成 flex 相关的 CSS 类 是(按配置生成响应式)

7.7 浮动

浮动 · Bootstrap v5.3

分类 核心要点 示例/参数说明
​概述​ - 通过.float-*类控制元素浮动 - 使用!important强制生效 - 视口断点与网格系统一致 - 对弹性盒项目无效 .float-start(左浮动) .float-end(右浮动) .float-none(禁用浮动)
​响应式​ - 支持5种响应式断点:sm/md/lg/xl/xxl - 断点后缀表示生效的最小视口宽度 .float-sm-start(≥576px生效) .float-xl-end(≥1200px生效) .float-md-none(≥768px禁用浮动)
​Sass​ - 实用程序定义在scss/_utilities.scss - 通过Utility API生成类名 可自定义断点或修改映射关系
​实用程序API​ 配置参数: -responsive: true(启用响应式) -property: float(CSS属性) -values映射关系: start: left end: right none: none 生成逻辑: float-{breakpoint}-{value} 例如.float-lg-end生成: @media (min-width: 992px) { float: right !important }

7.8 交互

交互 · Bootstrap v5.3

​类别​ ​类名​ ​用途​ ​示例代码​ ​注意事项​
​文本选择​ .user-select-all 点击时选中整个段落文本 <p >点击全选</p> 强制用户全选,可能影响操作体验
.user-select-auto 默认文本选择行为(根据浏览器/系统) <p >默认行为</p> 通常不需要显式声明
.user-select-none 禁止用户选择文本 <p >不可选中</p> 用户无法复制内容,慎用
​指针事件​ .pe-none 阻止指针交互(鼠标/触控) <a href="#" >不可点击</a> 1. 仅阻止指针事件,键盘仍可操作 2. 需配合tabindex="-1"aria-disabled="true"完全禁用
.pe-auto 恢复默认指针交互(通常用于覆盖继承的.pe-none <div ><a >可点击</a></div> 默认行为,通常用于解决父级禁用时的子元素特例
​Sass扩展​ - 通过实用程序API自定义: 1. 添加新的user-select值 2. 修改pointer-events类名映射 scss<br>$utilities: (<br> "user-select": (values: all auto none text),<br> "pointer-events": (class: pe, values: none auto)<br>);<br> 需在编译前修改Sass变量

7.9 链接

链接(Link) · Bootstrap v5.3

知识点 类名/方法 描述 注意事项
​链接不透明度​ .link-opacity-{10/25/50/75/100} 调整链接整体不透明度 使用rgba()值,悬停变体添加-hover后缀(如.link-opacity-10-hover
​链接下划线​
- 下划线颜色 .link-underline-{primary/secondary/success/danger/warning/info/light/dark} 独立设置下划线颜色 需先添加.link-underline
- 下划线偏移 .link-offset-{1/2/3} 调整下划线与文本距离(单位:em) 悬停变体添加-hover后缀(如.link-offset-3-hover
- 下划线不透明度 .link-underline-opacity-{0/10/25/50/75/100} 调整下划线不透明度 需先添加.link-underline类,悬停变体添加-hover后缀
​悬停变体​ 在类名后加-hover 创建仅悬停时生效的样式 适用于不透明度、偏移等属性
​彩色链接​ .link-{primary/secondary/success/danger/warning/info/light/dark} 主题色链接,可组合其他实用类 需配合偏移/不透明度类使用(如.link-offset-2.link-underline-opacity-25
​Sass​ scss/_utilities.scss 定义链接相关实用程序的 Sass 变量和映射 支持自定义颜色、偏移值等
​Utilities API​ 通过配置映射生成实用类 自动生成链接不透明度、偏移、下划线等 CSS 类 可在_utilities.scss中修改参数扩展功能

7.10 对象拟合

对象拟合(object fit) · Bootstrap v5.3

​知识点​ ​详细说明​
​工作原理​ 通过.object-fit-{value}类设置object-fit属性,控制内容填充父容器的方式(如保持比例、拉伸等)。支持响应式断点。
​示例​ - ​​类名​​:.object-fit-contain,.object-fit-cover,.object-fit-fill,.object-fit-scale(对应scale-down),.object-fit-none - ​​效果​​:保留纵横比、覆盖容器、拉伸填满、智能缩放或原始尺寸。
​响应式​ - ​​格式​​:.object-fit-{breakpoint}-{value}(如.object-fit-md-contain) - ​​断点​​:sm(≥576px)、md(≥768px)、lg(≥992px)、xl(≥1200px)、xxl(≥1400px)。
​Video 支持​ 类名同样适用于<video>元素,用法与<img>一致(如.object-fit-cover)。
​实用程序 API​ - ​​SCSS 定义​​:在scss/_utilities.scss中声明。 - ​​配置参数​​: -responsive: true(生成响应式类) -property: object-fit(CSS 属性) -values:映射类名与 CSS 值(如contain: contain)。

7.11 不透明度

不透明度 · Bootstrap v5.3

​类别​ ​类名​ ​不透明度值​ ​效果描述​ ​示例代码​ ​实用程序 API 配置​
​基础类​ .opacity-100 1 元素完全不透明 <div > property: opacity; values: (0:0, 25:.25, 50:.5, 75:.75, 100:1)
.opacity-75 0.75 元素 75% 不透明(25% 透明) <div >
.opacity-50 0.5 元素 50% 不透明(半透明) <div >
.opacity-25 0.25 元素 25% 不透明(高度透明) <div >
.opacity-0 0 元素完全透明 <div >
​技术实现​ ​文件路径​ SCSS 工具类定义位置:scss/_utilities.scss
​版本支持​ ​Bootstrap 版本​ v5.3.0-alpha2 及以上支持

7.12 溢出

溢出(Overflow) · Bootstrap v5.3

​类别​ ​类名/方法​ ​功能描述​ ​示例/注意事项​
​溢出(overflow)​ .overflow-auto 当内容溢出容器时,自动显示滚动条。 <div >...</div>
.overflow-hidden 隐藏溢出容器的内容(不可滚动)。 <div >...</div>
.overflow-visible 即使内容溢出容器,也强制显示全部内容(不裁剪)。 <div >...</div>
.overflow-scroll 强制显示滚动条(无论内容是否溢出)。 <div >...</div>
​overflow-x​ .overflow-x-auto 仅在水平方向溢出时显示滚动条。 <div >...</div>
.overflow-x-hidden 隐藏水平方向溢出的内容。 <div >...</div>
.overflow-x-visible 强制显示水平溢出的内容(不裁剪)。 <div >...</div>
.overflow-x-scroll 强制在水平方向显示滚动条。 <div >...</div>
​overflow-y​ .overflow-y-auto 仅在垂直方向溢出时显示滚动条。 <div >...</div>
.overflow-y-hidden 隐藏垂直方向溢出的内容。 <div >...</div>
.overflow-y-visible 强制显示垂直溢出的内容(不裁剪)。 <div >...</div>
.overflow-y-scroll 强制在垂直方向显示滚动条。 <div >...</div>
​Sass​ $overflows变量 自定义溢出工具类的可用值(默认:auto, hidden, visible, scroll)。 修改_variables.scss中的$overflows变量以扩展或删除类。
​实用程序 API​ "overflow"配置项 定义overflow工具类的生成规则(属性、值)。 "overflow": (property: overflow, values: auto hidden visible scroll)
"overflow-x"配置项 定义overflow-x工具类的生成规则。 "overflow-x": (property: overflow-x, values: auto hidden visible scroll)
"overflow-y"配置项 定义overflow-y工具类的生成规则。 "overflow-y": (property: overflow-y, values: auto hidden visible scroll)

7.13 位置

位置(Position) · Bootstrap v5.3

​分类​ ​说明​ ​类/变量​ ​示例/备注​
​位置值​ 定义元素的定位方式 .position-static .position-relative .position-absolute .position-fixed .position-sticky 无响应式设计,直接通过类名设置定位模式
​排列元素​ 使用边缘定位工具调整元素位置 {属性}-{位置} 属性:top/start/bottom/end 位置:0/50/100(对应 0%、50%、100%) <div > 组合使用定位类和边缘工具(如start-50表示左 50%)
​居中元素​ 通过translate工具实现居中 .translate-middle(水平+垂直居中) .translate-middle-x(仅水平) .translate-middle-y(仅垂直) <div > 需结合top-50start-50使用,实现完美居中
​示例​ 实际应用场景案例 1. 徽章定位:top-0 start-100 translate-middle 2. 箭头标记:top-100 start-50 translate-middle 3. 进度条按钮居中 使用组合类实现复杂布局,如按钮角标、悬浮提示等
​Sass 映射​ 通过变量扩展定位值 $position-values映射变量 默认值:(0: 0, 50: 50%, 100: 100%) 可添加自定义值(如25: 25%)扩展工具类
​Utilities API​ 用于生成定位工具类的底层配置 scss/_utilities.scss中定义: -position属性及值 -top/bottom/start/end边缘工具 -translate-middle转换工具 示例配置: "position": (property: position, values: static relative absolute fixed sticky) 支持自定义生成规则

7.14 阴影

阴影 · Bootstrap v5.3

​知识点​ ​类名/Sass变量/参数​ ​描述​ ​示例/值或配置​
​示例​ .shadow-none 移除元素的阴影效果 <div >(无阴影)
.shadow-sm 添加小型阴影 <div >(更浅更小的阴影)
.shadow 添加默认尺寸的阴影 <div >(标准阴影效果)
.shadow-lg 添加大型阴影 <div >(更深更大的阴影)
​Sass 变量​ $box-shadow ​默认阴影​​的 Sass 变量 0 .5rem 1rem rgba($black, .15)
$box-shadow-sm ​小型阴影​​的 Sass 变量 0 .125rem .25rem rgba($black, .075)
$box-shadow-lg ​大型阴影​​的 Sass 变量 0 1rem 3rem rgba($black, .175)
$box-shadow-inset ​内嵌阴影​​的 Sass 变量(未直接关联示例中的类) inset 0 1px 2px rgba($black, .075)
​Utilities API​ property 指定 CSS 属性名称(此处为box-shadow property: box-shadow
class 生成的实用工具类名前缀 class: shadow(生成.shadow-*类)
values 定义不同阴影类名对应的值 (null: $box-shadow, sm: $box-shadow-sm, lg: $box-shadow-lg, none: none)(映射到.shadow-*类)

7.15 尺寸

调整尺寸大小(Sizing) · Bootstrap v5.3

​分类​ ​描述​ ​示例/用法​
​相对于父级​ 通过百分比或auto设置元素尺寸,基于父容器的大小。 - 类名:w-25,w-50,w-75,w-100,w-auto - 类名:h-25,h-50,h-75,h-100,h-auto - 最大尺寸:mw-100(max-width:100%)、mh-100(max-height:100%)
​相对于视口​ 使用视口单位(vw/vh)设置元素尺寸,基于浏览器视口的尺寸。 - 类名:vw-100(width:100vw)、vh-100(height:100vh) - 最小视口尺寸:min-vw-100(min-width:100vw)、min-vh-100(min-height:100vh)
​Sass​ _utilities.scss文件中定义实用类的生成规则,通过映射(map)配置属性、类前缀和值。 scss<br>"width": (<br> property: width,<br> class: w,<br> values: (25: 25%, 50: 50%, ...)<br>)<br>
​Utilities API​ Bootstrap 提供的工具类生成系统,允许开发者通过修改 Sass 配置来自定义或扩展实用类。 - 可调整支持的百分比值(如添加33%) - 可新增属性(如min-width)或类名前缀。

7.16 间距

间距(Spacing) · Bootstrap v5.3

知识点 说明
​表示法​ 类名格式:{属性}{方向}-{断点}-{尺寸} 属性:m(外边距)、p(内边距) 方向:t(上)、b(下)、s(左/右)、e(右/左)、x(左右)、y(上下)、空(四边) 尺寸:0-5(基于$spacer的倍数)、auto(仅margin)
​示例​ .mt-0(上边距0)、.ms-1(左/右边距0.25rem)、.px-2(左右内边距0.5rem)、.p-3(四边内边距1rem)
​水平居中​ 使用.mx-auto类,需配合display: block和固定宽度
​负边距​ 默认禁用,需Sass设置$enable-negative-margins: true 类名格式:.m{n方向}-n{尺寸}(如.mt-n1
​间隙(Gap)​ 父容器使用.gap-{尺寸}(响应式),基于$spacers,适用于Grid/Flex布局,替代子项边距设置
​行间隙​ .row-gap-{尺寸}设置垂直间距,可配合.gap-0单独使用
​列间距​ .column-gap-{尺寸}设置水平间距,响应式支持
​Sass映射​ $spacers变量定义尺寸(0-5): 0:0,1:$spacer*0.25,2:$spacer*0.5,3:$spacer,4:$spacer*1.5,5:$spacer*3
​Utilities API​ 通过Sass配置生成工具类: - 包含margin/padding及其方向变体 - 支持响应式(responsive: true) - 合并正负边距值映射

7.17 文本

文本 · Bootstrap v5.3

​分类​ ​类名/变量​ ​作用描述​ ​示例/用法​ ​CSS属性​ ​Sass变量/映射​
​文本对齐方式​ .text-start.text-center.text-end .text-[sm/md/lg/xl]-start 控制文本对齐方向,支持响应式断点 <p >左对齐(中屏及以上)</p> text-align: left/center/right 通过Utilities API配置响应式对齐
​文本环绕和溢出​ .text-wrap.text-nowrap 自动换行/强制不换行 <div >...</div> white-space: normal/nowrap $white-space映射
​分词符​ .text-break 强制长单词或URL换行 <p >超长连续字符...</p> word-wrap: break-word word-break: break-word 在RTL语言编译中移除
​文本转换​ .text-lowercase.text-uppercase.text-capitalize 文本大小写转换 <p >首字母大写</p> text-transform: lowercase/uppercase/capitalize
​字体大小​ .fs-1.fs-6 按标题级别设置字体大小 <p >中号文本</p> font-size $font-sizes映射(含6级尺寸)
​字体粗细和斜体​ .fw-[lighter...bold].fst-italic.fst-normal 控制字重(9种级别)和斜体样式 <p >半粗体</p> <p >斜体</p> font-weight font-style $font-weight-*系列变量(如$font-weight-bold
​行高​ .lh-1.lh-sm.lh-base.lh-lg 控制文本行高(1倍/紧凑/基准/宽松) <p >紧凑行距文本...</p> line-height $line-height-*变量(如$line-height-base: 1.5
​等宽字体​ .font-monospace 应用等宽字体栈 <p >代码样式文本</p> font-family $font-family-monospace
​重置颜色​ .text-reset 继承父级颜色 <a >继承颜色的链接</a> color: inherit
​文字装饰​ .text-decoration-underline .text-decoration-line-through .text-decoration-none 添加下划线/删除线 移除装饰(常用于链接) <a >无下划线链接</a> text-decoration
​CSS相关​ - 涉及主要属性: text-alignwhite-space font-sizetext-transform
​Sass变量​ $font-family-* $font-size-* $font-weight-* $line-height-* 定义字体栈、基准尺寸、字重等级、行高等核心参数 $font-size-base: 1rem $font-weight-bold: 700
​Sass映射​ $font-sizes $theme-colors-text 生成字体大小工具类 定义主题色文本颜色映射 $font-sizes: (1: 2.5rem...) $theme-colors-text: ("primary": $blue...)
​Utilities API​ 通过scss/_utilities.scss配置 动态生成工具类系统,支持: • 响应式断点 • RTL控制 • 自定义属性映射 • 值覆盖扩展 示例配置: "font-size": (<br> rfs: true,<br> property: font-size,<br> values: $font-sizes<br>)

7.18 垂直对齐

垂直对齐 · Bootstrap v5.3

类名 效果描述 适用元素类型 典型场景示例 注意事项
.align-baseline 元素基线与父元素基线对齐 内联、内联块、表格单元格 文本与基线对齐(默认行为) 仅对特定元素生效
.align-top 元素顶部对齐到当前行内最高元素的顶部 同上 图标与顶部对齐 非行内元素需结合其他工具
.align-middle 元素垂直居中对齐到父容器中部 同上 表格单元格内容垂直居中 表格单元格常用
.align-bottom 元素底部对齐到当前行内最低元素的底部 同上 文本底部对齐 对行内元素生效
.align-text-top 元素顶部对齐到父元素的字体顶部(与字体相关,而非行高) 同上 图标对齐到文字字体顶部 注意与.align-top的区别
.align-text-bottom 元素底部对齐到父元素的字体底部 同上 图标对齐到文字字体底部 同上
​Flex工具​ 通过Flex布局实现垂直居中 块级元素(如<div> 整个容器内容垂直居中 使用.d-flex+.align-items-center,如:<div >

7.19 可访问性

可见性 · Bootstrap v5.3

​知识点​ ​说明​
​作用​ 控制元素的可见性,不修改其display属性,不影响布局。
​类名​ .visible.invisible
​CSS 属性​ visibility
​值​ .visiblevisible .invisiblehidden
​布局影响​ 元素仍占据页面空间(与display: none不同)。
​辅助技术兼容性​ .invisible类元素对视觉和屏幕阅读器用户均隐藏。
​优先级​ 使用!important确保样式覆盖。
​应用场景​ 需要临时隐藏元素但保留布局时使用(如动态切换可见性)。
​Sass 工具 API​ 通过scss/_utilities.scss声明,配置项为"visibility"的键值对。
​版本​ Bootstrap v5.3.0-alpha2

7.20 Z-index

Z-index · Bootstrap v5.3

​知识点​ ​用途/功能​ ​关键点​ ​代码/配置示例​
​示例​ 展示如何通过 z-index 实用类控制元素堆叠顺序 - 需要结合position类(如position-absolute) - 提供从z-n1(-1)到z-3(3)的层级范围 html<br><div >z-3</div><br><div >z-2</div>
​覆盖​ 确保覆盖组件(模态框、工具提示等)始终位于其他内容之上 - 覆盖组件有独立的高层级 z-index(如模态框默认 z-index 1050) - 避免与低级实用类冲突(低级类仅到 3) 无直接代码,但需注意组件默认层级
​组件方法​ 管理组件内部重复元素的堆叠顺序(如按钮组中的按钮) - 使用低级 z-index 值(如z-1) - 仅在组件内部协调重叠元素 无直接代码,常见于组件源码(如按钮组position: relative+z-index
​CSS​ 生成 z-index 实用类的 CSS 样式 - 通过工具类(如.z-3)直接应用 z-index 值 - 需配合定位类(如position-absolute)生效 css<br>.z-3 { z-index: 3; }<br>.z-n1 { z-index: -1; }
​Sass 映射​ 自定义 z-index 的层级范围和值 - 修改$zindex-levels映射可扩展/调整层级 - 默认值:n1: -1, 0: 0, 1: 1, 2: 2, 3: 3 scss<br>$zindex-levels: (n2: -2, n1: -1, 0: 0, 5: 5); // 扩展层级
​Utilities API​ 通过工具 API 动态生成 z-index 实用类 - 在scss/_utilities.scss中定义 - 支持自定义属性名、类前缀和值映射 scss<br>"z-index": (<br> property: z-index,<br> class: z,<br> values: $zindex-levels<br>)

8 扩展

8.1 方法

Approach · Bootstrap v5.3 (sbox.cn)

​知识点​ ​说明​ ​关键点/原则​ ​示例/注意事项​
​响应式设计​ 以移动优先(mobile-first)为核心 - 优先用min-width媒体查询 - 减少CSS覆盖,随视口增大添加样式 - 必要时使用max-width覆盖复杂组件 .d-none(全屏生效) .d-md-none(中屏及以上生效)
​组件类设计​ 基类+修饰类模式 - 基类定义通用样式(如.btn) - 修饰类扩展变体(如.btn-primary) - 仅当需要多属性修改时才用修饰类 避免过度创建修饰类 主题色(.btn-danger)和尺寸(.btn-lg)是典型用例
​z-index层级​ 分两种层级体系 ​组件元素​​:0-3(默认→hover→active→focus) ​​覆盖组件​​:从1000开始(下拉框→导航栏→模态框→工具提示) 导航栏z-index: 1030 模态框z-index: 1055 确保用户交互元素(如focus状态)优先级最高
​HTML/CSS优先​ 优先使用语义化HTML和CSS实现功能 - 通过data属性驱动JavaScript插件 - 利用浏览器原生功能(如表单验证伪类) - 避免不必要的自定义JS <button data-bs-toggle="modal">代替JS初始化 使用:valid/:invalid伪类验证样式
​工具类(Utilities)​ 用单一功能类替代自定义CSS - 减少CSS体积 - 提高开发效率 - 常用属性值组合固化 .d-block(display: block) .mt-3(margin-top: 1rem) 优先于编写自定义样式类
​灵活HTML结构​ 避免严格的HTML结构要求 - 使用类选择器而非子选择器(避免>) - 降低CSS特异性 - 允许用户自定义HTML嵌套 导航组件不强制ul > li > a结构 但需保持语义化(如仍建议用<button>而非<div>实现按钮)
​代码规范​ 统一的代码编写标准 - 属性顺序:布局→尺寸→文本→视觉 - HTML验证使用vnu-jar - 使用连字符命名(kebab-case) 示例CSS顺序:display > padding > color > background HTML属性顺序:class > id > data-*

8.2 图标

Icons · Bootstrap v5.3 (sbox.cn)

知识点 说明
​默认图标集​ Bootstrap不包含默认图标集
​官方图标库​ Bootstrap Icons(由@mdo设计,Bootstrap团队维护)
​图标格式推荐​ 优先使用SVG格式(更好的可访问性和矢量支持)
​Bootstrap Icons特点​ 1. 开源MIT协议 2. 源自Bootstrap组件需求 3. 持续增长的图标库
​图标来源​ 可自由选择: - Bootstrap Icons - 第三方图标集
​推荐替代方案​ 官方测试过的优选图标集(文档未具体命名)
​其他可用资源​ 未经验证但具备潜力的图标库,需满足: 1. 多格式支持(必须含SVG) 2. 可访问性良好
​许可证要求​ 推荐使用MIT等开源协议(与Bootstrap兼容)
​典型应用场景​ 表单、轮播等组件交互元素
​技术优势​ SVG支持: - 高分辨率显示 - CSS自定义样式 - 更好的无障碍特性

四、实战技巧

1、布局

1.1 需求

(1)假设我期望的布局如下方展示

1.2 实现

(1)我使用cursor给我生成了这样的代码

效果:

代码:

<!doctype html><html lang="en">  <head>    <meta charset="utf-8">    <meta name="viewport" content="width=device-width, initial-scale=1">    <title>Bootstrap Layout Demo</title>    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-aFq/bzH65dt+w6FI2ooMVUpc+21e0SRygnTpmBvdBgSdnuTN7QbdgL+OapgHtvPp" crossorigin="anonymous">  </head>  <body >    <div >      <!-- Header -->      <div >        <div >          Header        </div>      </div>            <!-- Content Area (Aside + Main) -->      <div >        <!-- Aside -->        <div >          Aside        </div>        <!-- Main Content -->        <div >          Main        </div>      </div>            <!-- Footer -->      <div >        <div >          Footer        </div>      </div>    </div>    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha2/dist/js/bootstrap.bundle.min.js" integrity="sha384-qKXV1j0HvMUeCBQ+QVp7JcfGl760yU08IQ+GpUo5hlbpg51QRiuqHAJz8+BrxE/N" crossorigin="anonymous"></script>  </body></html>

解读一下代码:

​类别​ 类名/属性 效果说明
​布局容器​ container-fluid 创建全宽容器(无左右外边距),适合全屏布局
​视口高度​ min-vh-100 设置最小视口高度为100vh,确保页面撑满整个屏幕高度
​Flex布局​ d-flex 启用弹性盒子布局
flex-column 设置垂直方向排列子元素
flex-grow-1 允许元素占据父容器的剩余空间
​栅格系统​ row 创建行容器,用于包裹列
col-12 占据整行宽度(适用于header/footer)
col-3 占据3/12宽度(侧边栏)
col-9 占据9/12宽度(主内容区)
​背景样式​ bg-light 设置浅灰色背景色
​间距控制​ p-4 添加4单位(1.5rem)内边距
​文本对齐​ text-center 文字居中显示

1.3 颜色

(1)为了方便查看,我们把每一块的bg-light的背景颜色都改一下

很显然,这不是我们想要的:

我们期望他撑满浏览器视野

左边侧边栏不对

这里讲解一下知识点,在使用色系时,并不是以blue这种关键字,而是使用primary这种直接示意的方式,改变text颜色,那就是text-primary,改变其背景,那就是text-bg-primary,没有元素又想改变背景怎么办呢?直接像本示例一样bg-primary即可:

在这里给大家简单列个不完整的示例表:

元素类型 类名示例 颜色影响部分 效果说明
按钮 .btn-primary 背景色 + 文字色 创建带有主题色的按钮
文本颜色 .text-primary 文字颜色 设置文字为主题色
背景色 .bg-primary 背景颜色 设置背景为主题色
边框 .border-primary 边框颜色 设置边框为主题色
徽章 .badge bg-primary 背景色 + 文字色 创建带主题色的小徽标
警告框 .alert-primary 背景色 + 边框 + 文字色 带主题色的提示框
进度条 .progress-bar bg-primary 进度条填充色 主题色进度条
列表组项 .list-group-item-primary 背景色 + 文字色 高亮列表项
表格行 .table-primary 表格行背景色 高亮表格行
导航链接 .nav-link active bg-primary 导航项背景色 激活状态的导航项
卡片头部 .card-header bg-primary 卡片头部背景色 主题色卡片标题栏
面包屑导航 .breadcrumb-item.active 当前项文字色 需配合.text-primary使用
分页激活项 .page-item.active .page-link 页码背景色 需配合.bg-primary使用
下拉菜单项 .dropdown-item.active 激活项背景色 需配合.bg-primary使用
工具提示 data-bs-custom- 工具提示背景色 自定义主题色工具提示
弹出框 data-bs-custom- 弹出框背景色 自定义主题色弹出框

1.4 调整左边侧边栏

我们可以这样,一行里面分成2列,右边一列分成3行。

<!doctype html><html lang="en">  <head>    <meta charset="utf-8">    <meta name="viewport" content="width=device-width, initial-scale=1">    <title>Bootstrap Layout Demo</title>    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha2/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-aFq/bzH65dt+w6FI2ooMVUpc+21e0SRygnTpmBvdBgSdnuTN7QbdgL+OapgHtvPp" crossorigin="anonymous">  </head>  <body >    <div >            <!-- Content Area (Left + Right) -->      <div >        <!-- Left Column -->        <div >          aside        </div>        <!-- Right Column -->        <div >          <!-- Right Column Rows -->          <div >            <div >              Header            </div>            <div >              main            </div>            <div >              Footer            </div>          </div>        </div>      </div>          </div>     <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha2/dist/js/bootstrap.bundle.min.js" integrity="sha384-qKXV1j0HvMUeCBQ+QVp7JcfGl760yU08IQ+GpUo5hlbpg51QRiuqHAJz8+BrxE/N" crossorigin="anonymous"></script>  </body></html>

1.5 撑满视野

<!doctype html><html lang="en" ><head>    <meta charset="utf-8">    <meta name="viewport" content="width=device-width, initial-scale=1">    <title>Dashboard Layout</title>    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">    <style>        .dashboard-body {            height: calc(100vh - 3.5rem); /* 精确补偿顶部导航 */        }    </style></head><body >    <!-- 全屏布局容器 -->    <div >        <div >                        <!-- 侧边栏 (固定宽度) -->            <aside >                <h3 >Aside</h3>            </aside>            <!-- 主内容区 (自适应宽度) -->            <main >                <!-- 顶部导航 -->                <header >                    <h3 >Header</h3>                </header>                <!-- 主内容区块 -->                <div >                        <h3>Main</h3>                </div>                <!-- 底部页脚 -->                <footer >                        <h2>Footer</h2>                </footer>            </main>                    </div>    </div>    <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script></body></html>

本小节的代码是优化过后的第二套代码,与第一套代码对比如下:

特性 第二套代码(优化版) 第一套代码(原始版)
​响应式设计​ 使用col-md-*实现中屏以上水平布局,移动端垂直堆叠 使用col-3/col-9固定比例,全屏保持3:9布局
​高度控制​ 多级h-100+flex-grow+自定义高度公式实现精确全屏填充 仅依赖min-vh-100基础高度控制
​结构嵌套​ 3级嵌套结构(container > row > columns) 2级嵌套结构(container > row)
​页脚定位​ 使用mt-auto实现自动底部吸附 自然文档流排列
​视觉增强​ 包含shadow阴影、rounded圆角等细节 基础背景色块
​移动端显示​ 侧边栏与主内容区在中屏以下自动堆叠 始终显示3:9比例,可能导致移动端内容挤压
​代码复杂度​ 较高(包含自定义CSS和复杂flex结构) 较低(仅基础网格类)

2、花式布局

要实现1的布局有很多种方法,其实前端技术很Open的,如果你愿意,你可以把它玩出花,代价是花点时间。

2.1纯网格布局(无Flex)

<!doctype html><html lang="en" ><head>    <meta charset="utf-8">    <meta name="viewport" content="width=device-width, initial-scale=1">    <title>Grid Layout</title>    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"></head><body >    <div >        <div >            <!-- 侧边栏 -->            <aside >                <h3 >AsideIndex-1</h3>            </aside>            <!-- 主内容区 -->            <div  >                <header >                    <h3 >Header</h3>                </header>                                <main >                    <h3>Main</h3>                </main>                                <footer >                    <h3>Footer</h3>                </footer>            </div>        </div>    </div></body></html>

2.2Flex填充布局

<!doctype html><html lang="en" ><head>    <meta charset="utf-8">    <meta name="viewport" content="width=device-width, initial-scale=1">    <title>Flex Fill Layout</title>    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet"></head><body >    <!-- 侧边栏 -->    <aside  >        <h3 >AsideIndex-2</h3>    </aside>    <!-- 主内容区 -->    <div >        <header >            <h3 >Header</h3>        </header>                <main >            <h3>Main</h3>        </main>                <footer >            <h3>Footer</h3>        </footer>    </div></body></html>

2.3CSS Grid混合布局

给大家一个半成品,大家可以修改一下,邀请大家在评论区贴代码。

<!doctype html><html lang="en" ><head>    <meta charset="utf-8">    <meta name="viewport" content="width=device-width, initial-scale=1">    <title>Grid Hybrid Layout</title>    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">    <style>        .layout-grid {            display: grid;            grid-template-columns: 16.666% 1fr;            grid-template-rows: auto 1fr auto;            height: 100vh;        }        @media (max-width: 768px) {            .layout-grid {                grid-template-columns: 1fr;            }        }    </style></head><body>    <div >        <!-- 侧边栏 -->        <aside >            <h3 >Aside</h3>        </aside>        <!-- 主内容区 -->        <header >            <h3 >Header</h3>        </header>                <main >            <h3>Main</h3>        </main>                <footer >            <h3>Footer</h3>        </footer>    </div></body></html>

2.4 对比

我们举了4个例子进行布局,其中一个还是半成品,我们对比一下。

特性 原始方案 纯网格布局 Flex填充布局 CSS Grid混合布局
​核心技术​ Bootstrap网格+Flex 纯Bootstrap网格 Flex工具类 CSS Grid+Bootstrap
​响应式实现​ 断点类控制 断点类控制 媒体查询 自定义媒体查询
​高度控制​ h-100+flex-grow 网格行高定义 flex-grow 固定高度定义
​移动端适配​ 自动堆叠 自动堆叠 需要额外处理 自定义响应规则
​代码复杂度​ 中等 简单 简单 较高
​扩展灵活性​ 一般 最高
​浏览器兼容​ 优秀 优秀 优秀 良好(IE有限)

汇总一下使用到的类:

​布局方式​ ​核心类/属性​ ​效果说明​
​纯网格布局​ .container-fluid .row .col-md-* .h-100 基于Bootstrap网格系统实现响应式布局,通过列宽定义结构,依赖行列嵌套实现全屏高度
.g-0 .d-grid grid-template-rows 消除默认间距,使用CSS Grid行模板定义垂直布局结构
​Flex填充布局​ .d-flex .flex-column .flex-grow-1 .flex-shrink-0 通过Flex弹性容器实现动态填充,侧边栏固定宽度,主内容区自动扩展
.min-vh-100 .mt-auto 确保全屏高度,实现页脚自动吸附底部
​CSS Grid混合布局​ display: grid grid-template-columns grid-template-rows 自定义网格轨道定义布局骨架,精确控制行列尺寸
.bg-* .p-4 颜色区块和间距的统一控制

3、谈谈继承静态页面是没办法继承的,比如子html想继承父html (如index.html)的结构。HTML 本身并不支持像编程语言那样的“继承”机制。所谓“继承 index.html”,其实是指复用index.html 的结构和样式,然后在新文件中进行扩展或修改。因此需要手动复制index.html的内容到新文件,然后进行修改和增强,这就是前端开发中常见的“继承”方式。

以下是常见的方式来实现继承:

3.1 组件化开发(推荐,适合大型项目)

使用React、Vue、Angular等现代前端框架,把公共部分(如头部、侧边栏、底部)做成组件。这样每个页面只需“引用”这些组件即可,真正实现代码复用和“继承”效果。

3.2服务端模板引擎

用如EJS、Jinja2、Thymeleaf等模板引擎,可以在HTML里用“模板继承”语法。例如EJS里可以<%-include('header.ejs')%>,这样多个页面共用一份头部代码。

4、Bootstrap 5 命名特点总结

4.1、属性型命名(CSS 属性映射)

​​特点:​​ 直接映射 CSS 属性,通过短横线 - 连接属性和参数 ​​规律:​​

{属性简写}-{方向}-{尺寸} {属性简写}-{断点}-{参数} ​​举例:​​

边距:mt-5(margin-top: 3rem)、mx-auto(margin-x: auto) 颜色:bg-primary(background-color)、text-white(color) 排版:text-center(text-align: center)、fs-4(font-size: 1.5rem) 布局:d-flex(display: flex)、gap-3(gap: 1rem) ​​举一反三:​​

若新增 blur-5 可表示 filter: blur(5px) 响应式场景:shadow-lg-md 表示中屏以上添加大阴影

4.2、组件型命名(语义化类名)

​​特点:​​ 用组件名作为前缀,配合状态修饰符 ​​规律:​​

{组件}-{修饰符} {组件}-{状态} ​​举例:​​

按钮:btn、btn-outline-danger、btn-lg 导航:nav-tabs、nav-link-active 卡片:card、card-img-overlay 弹窗:modal、modal-fullscreen ​​举一反三:​​

若新增 timeline 组件,可设计 timeline-item、timeline-vertical 状态扩展:calendar-day-selected 表示选中状态

4.3、响应式命名(断点系统)

​​特点:​​ 用断点缩写作为中缀,控制生效范围 ​​规律:​​

{属性/组件}-{断点}-{参数} ​​举例:​​

栅格:col-md-6(中屏以上占 6 列) 显示控制:d-lg-none(大屏隐藏) 间距响应:ps-sm-3(小屏以上左 padding) ​​举一反三:​​

自定义断点:rotate-xl-45 表示超大屏旋转 45 度 复合控制:grid-col-xxl-4 表示超宽屏显示 4 列

4.4、状态型命名(动态交互)

​​特点:​​ 描述元素交互状态,常配合 JavaScript ​​规律:​​

{状态}-{组件} {组件}-{状态} ​​举例:​​

通用状态:active、disabled、show 表单验证:is-invalid、valid-feedback 加载状态:spinner-border、progress-bar-animated ​​举一反三:​​

新增状态:uploading、drag-over 组合状态:table-row-highlighted 表示高亮表格行

4.5、HTML 标签增强型

​​特点:​​ 直接扩展原生标签功能 ​​规律:​​

{标签}-{功能} ​​举例:​​

表格:table、table-striped、table-hover 表单:form-control、form-select、input-group 列表:list-group、list-group-flush ​​举一反三:​​

增强 <details>:details-accordion 实现手风琴效果 扩展 <video>:video-responsive 实现响应式视频

4.6、综合应用示例

<!-- 属性型 + 响应式 --><div ></div><!-- 组件型 + 状态 --><button  disabled>  <span ></span>  Submit</button><!-- HTML 标签增强 --><table >  <thead >    <tr><th >Header</th></tr>  </thead></table><!-- 自定义扩展 --><div >  <div ></div></div>

4.7、学习方法论

​​解构法​​:拆分如 btn-outline-danger-lg 为: btn(组件) outline(样式变体) danger(主题颜色) lg(尺寸) ​​组合法​​:通过已知规则组合新类: border-dashed-warning = 虚线边框 + 警告色 rotate-45-hover = 悬停旋转效果 ​​逆向法​​:通过需求反推命名: 需要卡片阴影 → 查文档得 shadow 类 需要输入框加载态 → 组合 input-loading + spinner

5、bootstrap studio

图形界面构建网站,地址见:Bootstrap Studio:看这一篇就够了

相关推荐