Bootstrap - 模态框:初学者指南
你好,未来的网页开发者们!今天,我们将深入Bootstrap模态框的精彩世界。如果你之前从未听说过它们,不用担心——在本教程结束时,你将能够像专业人士一样创建弹出窗口!
什么是模态框?
在我们开始之前,让我们先了解模态框是什么。想象你正在读书,突然一个小便签弹出来,上面有重要信息。这就是模态框在网站上的作用!它是一个对话框或弹出窗口,出现在当前页面上。
模态框组件
让我们从Bootstrap模态框的基本结构开始:
<div class="modal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title">模态框标题</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="关闭"></button>
</div>
<div class="modal-body">
<p>模态框主体文本放在这里。</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">关闭</button>
<button type="button" class="btn btn-primary">保存更改</button>
</div>
</div>
</div>
</div>
让我们分解一下:
- 最外层的
<div>
,带有"modal"类,是主要的容器。 - 在里面,我们有"modal-dialog",它控制模态框的形状和位置。
- "modal-content"包含我们模态框的实际内容。
- 然后我们有三个部分:头部、主体和尾部。
静态背景
有时候,你希望模态框在用户与其交互之前保持显示。这时,静态背景就派上用场了:
<div class="modal" data-bs-backdrop="static" data-bs-keyboard="false" tabindex="-1">
<!-- 模态框内容在这里 -->
</div>
通过添加data-bs-backdrop="static"
,点击模态框外部不会关闭模态框。data-bs-keyboard="false"
防止使用Esc键关闭。
可滚动模态框
内容很多?没问题!让你的模态框可滚动:
<div class="modal-dialog modal-dialog-scrollable">
<!-- 模态框内容在这里 -->
</div>
添加modal-dialog-scrollable
类允许模态框主体滚动,同时保持头部和尾部不动。
垂直居中
想让你的模态框正好在屏幕中间?简单!
<div class="modal-dialog modal-dialog-centered">
<!-- 模态框内容在这里 -->
</div>
modal-dialog-centered
类会魔法般地将你的模态框垂直居中。
工具提示和弹出框
你甚至可以在模态框中使用工具提示和弹出框。只需记得初始化它们:
var myModal = document.getElementById('myModal')
var myInput = document.getElementById('myInput')
myModal.addEventListener('shown.bs.modal', function () {
myInput.focus()
})
使用网格
Bootstrap的网格系统在模态框内也适用!这里是一个例子:
<div class="modal-body">
<div class="container-fluid">
<div class="row">
<div class="col-md-4">.col-md-4</div>
<div class="col-md-4 ms-auto">.col-md-4 .ms-auto</div>
</div>
</div>
</div>
这会在你的模态框主体中创建一个两列布局。
动态内容
你可以动态地更改模态框的内容。下面是如何操作的:
var exampleModal = document.getElementById('exampleModal')
exampleModal.addEventListener('show.bs.modal', function (event) {
var button = event.relatedTarget
var recipient = button.getAttribute('data-bs-whatever')
var modalTitle = exampleModal.querySelector('.modal-title')
var modalBodyInput = exampleModal.querySelector('.modal-body input')
modalTitle.textContent = '新消息给 ' + recipient
modalBodyInput.value = recipient
})
这个脚本会根据触发模态框的按钮更改模态框的内容。
在模态框之间切换
你甚至可以在不同的模态框之间切换:
<div class="modal fade" id="exampleModalToggle" aria-hidden="true" aria-labelledby="exampleModalToggleLabel" tabindex="-1">
<!-- 第一个模态框内容 -->
<button class="btn btn-primary" data-bs-target="#exampleModalToggle2" data-bs-toggle="modal">打开第二个模态框</button>
</div>
<div class="modal fade" id="exampleModalToggle2" aria-hidden="true" aria-labelledby="exampleModalToggleLabel2" tabindex="-1">
<!-- 第二个模态框内容 -->
<button class="btn btn-primary" data-bs-target="#exampleModalToggle" data-bs-toggle="modal">回到第一个</button>
</div>
更改动画
想让你的模态框入口更有趣?试试更改动画:
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<!-- 模态框内容 -->
</div>
fade
类添加了一个漂亮的淡入效果。你可以使用CSS创建自定义动画!
动态高度
模态框可以根据内容调整高度:
<div class="modal-dialog modal-dialog-scrollable">
<!-- 内容高度不同的模态框 -->
</div>
modal-dialog-scrollable
类确保无论内容长度如何,你的模态框看起来都很棒。
无障碍性
始终考虑无障碍性!使用aria-labelledby
来引用模态框标题:
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel">模态框标题</h5>
<!-- 其余的模态框内容 -->
</div>
</div>
</div>
</div>
可选尺寸
模态框有不同的尺寸:
<!-- 小尺寸模态框 -->
<div class="modal-dialog modal-sm">...</div>
<!-- 大尺寸模态框 -->
<div class="modal-dialog modal-lg">...</div>
<!-- 超大尺寸模态框 -->
<div class="modal-dialog modal-xl">...</div>
全屏模态框
想让你的模态框占据整个屏幕?使用全屏类:
<div class="modal-dialog modal-fullscreen">
<!-- 模态框内容 -->
</div>
你也可以让它在特定屏幕尺寸下全屏:
<div class="modal-dialog modal-fullscreen-sm-down">
<!-- 模态框内容 -->
</div>
这个模态框在小屏幕及以下尺寸下会全屏。
以上就是全部内容!现在你已经具备了使用Bootstrap创建出色模态框的知识。记住,熟能生巧,所以不要害怕尝试这些概念。祝您编程愉快!
方法 | 描述 |
---|---|
.modal(options) | 将你的内容激活为模态框。接受一个可选的选项对象。 |
.modal('toggle') | 手动切换模态框。 |
.modal('show') | 手动打开模态框。 |
.modal('hide') | 手动隐藏模态框。 |
.modal('handleUpdate') | 当模态框打开时,如果模态框的高度发生变化(例如出现滚动条),则手动调整模态框的位置。 |
.modal('dispose') | 销毁元素的模态框。 |
Credits: Image by storyset