Bootstrap 5 的文件结构与 Bootstrap 4 相比有一些重要变化,主要区别在于不再依赖 jQuery,并改进了 JavaScript 插件架构:
bootstrap/
├── dist/
│ ├── css/
│ │ ├── bootstrap.css
│ │ ├── bootstrap.min.css
│ │ ├── bootstrap-grid.css
│ │ ├── bootstrap-grid.min.css
│ │ ├── bootstrap-utilities.css
│ │ └── bootstrap-utilities.min.css
│ └── js/
│ ├── bootstrap.bundle.js
│ ├── bootstrap.bundle.min.js
│ ├── bootstrap.js
│ └── bootstrap.min.js
├── js/
│ └── src/ (所有插件源文件)
└── scss/ (所有 Sass 源文件)
CSS 文件:
bootstrap.css
:完整 CSS(包含网格系统、组件和工具类)bootstrap-grid.css
:仅包含网格系统bootstrap-utilities.css
:仅包含工具类.min.css
为对应的压缩版本JS 文件:
bootstrap.js
:所有插件(不包含 Popper)bootstrap.bundle.js
:包含所有插件和 Popper.min.js
为对应的压缩版本图标系统:
Bootstrap 5
...
...
...
// 工具提示
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
return new bootstrap.Tooltip(tooltipTriggerEl)
})
// 弹出框
var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
return new bootstrap.Popover(popoverTriggerEl)
})
// 模态框
var myModal = new bootstrap.Modal(document.getElementById('myModal'), {
keyboard: false
})
// 模态框事件
var myModalEl = document.getElementById('myModal')
myModalEl.addEventListener('show.bs.modal', function (event) {
// 在模态框显示前触发
})
// 标签页切换事件
var tabEls = document.querySelectorAll('a[data-bs-toggle="tab"]')
tabEls.forEach(function(tabEl) {
tabEl.addEventListener('shown.bs.tab', function (event) {
event.target // 新激活的标签页
event.relatedTarget // 之前激活的标签页
})
})
// 轮播事件
var myCarousel = document.getElementById('myCarousel')
myCarousel.addEventListener('slide.bs.carousel', function (event) {
console.log('滑动开始', event.direction)
})
// 模态框方法
var myModal = bootstrap.Modal.getInstance(document.getElementById('myModal'))
myModal.show() // 显示
myModal.hide() // 隐藏
myModal.toggle() // 切换
myModal.handleUpdate() // 重新计算位置
// 标签页方法
var triggerTabList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tab"]'))
triggerTabList.forEach(function (triggerEl) {
var tabTrigger = new bootstrap.Tab(triggerEl)
triggerEl.addEventListener('click', function (event) {
event.preventDefault()
tabTrigger.show()
})
})
// 工具提示方法
var tooltip = bootstrap.Tooltip.getInstance(document.querySelector('[data-bs-toggle="tooltip"]'))
tooltip.show()
tooltip.hide()
tooltip.toggle()
tooltip.dispose()
上下左右间距
带边框的圆角元素
蓝色文本,75%透明度的深色背景
Flex item 1
Flex item 2
Flex item 3
// 修改主色调
$primary: #0074d9;
$danger: #ff4136;
// 修改字体
$font-family-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
// 修改网格断点
$grid-breakpoints: (
xs: 0,
sm: 576px,
md: 768px,
lg: 992px,
xl: 1200px,
xxl: 1400px
);
// 导入 Bootstrap
@import "bootstrap";
// 只引入需要的 Bootstrap 模块
@import "bootstrap/functions";
@import "bootstrap/variables";
@import "bootstrap/mixins";
@import "bootstrap/root";
@import "bootstrap/reboot";
@import "bootstrap/type";
@import "bootstrap/grid";
@import "bootstrap/buttons";
@import "bootstrap/utilities";
xxl
断点 (1400px)gap
、border-{width}
等JavaScript 插件不工作:
data-bs-*
属性而不是 data-*
样式问题:
bootstrap-reboot.css
图标不显示:
响应式问题:
浏览器兼容性问题:
Bootstrap 5 提供了更现代的 Web 开发体验,是构建响应式、移动优先网站的强大工具。