Bootstrap系列之模态框(Modal)

article/2025/8/19 0:56:56

文章の目录

  • 1、工作原理
  • 2、示例
    • 2.1、Modal组件
    • 2.2、在线演示
    • 2.3、静态背景
    • 2.4、滚动内容
    • 2.5、垂直居中
    • 2.6、提示和弹窗
    • 2.7、使用网格
    • 2.8、不同模态框的内容
    • 2.9、改变动画
    • 2.10、移除动画
    • 2.11、动态高度
    • 2.12、Accessibility
    • 2.13、嵌入YouTube视频
  • 3、Optional sizes
  • 4、用法
    • 4.1、通过data属性
    • 4.2、通过JavaScript
    • 4.3、选项
    • 4.4、方法
      • 4.4.1、.modal(options)
      • 4.4.2、.modal('toggle')
      • 4.4.3、.modal('show')
      • 4.4.4、.modal('hide')
      • 4.4.5、.modal('handleUpdate')
      • 4.4.6、.modal('dispose')
    • 4.5、事件
  • 写在最后


使用Bootstrap的JavaScript模态插件添加对话框到您的网站的lightbox、用户通知、或完全自定义内容。

1、工作原理

在开始使用Bootstrap的模态组件之前,请务必阅读以下内容,因为我们的菜单选项最近发生了更改。

  • Modal是用HTML、CSS和JavaScript构建的。它们重新定位在文档中的其他所有内容之上,并从<body>中删除滚动,以使模态内容滚动。
  • 点击Modal背景将自动关闭Modal。
  • Bootstrap每次只支持一个模态窗口。嵌套模态不受支持,因为我们认为它们的用户体验很差。
  • Modals使用position: fixed,有时它的渲染会有点特别。只要有可能,将Modal HTML放在顶级位置,以避免其他元素的潜在干扰。在另一个固定元素中嵌套.modal时,可能会遇到问题。
  • 同样,由于位置固定,在移动设备上使用Modal有一些注意事项。
  • 由于HTML5定义其语义的方式,自动聚焦HTML属性在Bootstrap modals中没有作用。为了达到同样的效果,可以使用一些自定义JavaScript
$('#myModal').on('shown.bs.modal', function () {$('#myInput').trigger('focus')
})

该组件的动画效果依赖于preferred -reduced-motion media查询。

2、示例

2.1、Modal组件

下面是一个静态Modal示例(意味着它的位置和显示已经被覆盖)。包括模态标题、模态主体(填充必需)和模态页脚(可选)。我们要求你尽可能在解散动作中包含模态标题,或者提供另一个显式的解散动作。

<div class="modal" tabindex="-1"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><h5 class="modal-title">Modal title</h5><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body"><p>Modal body text goes here.</p></div><div class="modal-footer"><button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button><button type="button" class="btn btn-primary">Save changes</button></div></div></div>
</div>

在这里插入图片描述

2.2、在线演示

通过单击下面的按钮切换工作模式演示。它会从页面顶部滑下来并淡入。

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal">Launch demo modal
</button><!-- Modal -->
<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">Modal title</h5><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body">...</div><div class="modal-footer"><button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button><button type="button" class="btn btn-primary">Save changes</button></div></div></div>
</div>

在这里插入图片描述

2.3、静态背景

当背景设置为静态时,在它外面点击时,模式将不会关闭。

<!-- Button trigger modal -->
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#staticBackdrop">Launch static backdrop modal
</button><!-- Modal -->
<div class="modal fade" id="staticBackdrop" data-backdrop="static" data-keyboard="false" tabindex="-1" aria-labelledby="staticBackdropLabel" aria-hidden="true"><div class="modal-dialog"><div class="modal-content"><div class="modal-header"><h5 class="modal-title" id="staticBackdropLabel">Modal title</h5><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body">...</div><div class="modal-footer"><button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button><button type="button" class="btn btn-primary">Understood</button></div></div></div>
</div>

在这里插入图片描述

2.4、滚动内容

当modal对用户的视口或设备来说太长时,它们会独立于页面本身滚动。
在这里插入图片描述
您还可以通过在.modal-dialog中添加.modal-dialog-scrollable来创建一个允许滚动模态主体的可滚动模态。

<!-- Scrollable modal -->
<div class="modal-dialog modal-dialog-scrollable">...
</div>

在这里插入图片描述

2.5、垂直居中

.modal-dialog-centered添加到.modal-dialog中,以使模式垂直居中。

<!-- Vertically centered modal -->
<div class="modal-dialog modal-dialog-centered">...
</div><!-- Vertically centered scrollable modal -->
<div class="modal-dialog modal-dialog-centered modal-dialog-scrollable">...
</div>

在这里插入图片描述

2.6、提示和弹窗

工具提示和弹出窗口可以根据需要放置在modal中。当modal关闭时,任何工具提示和弹出窗口也会自动关闭。

<div class="modal-body"><h5>Popover in a modal</h5><p>This <a href="#" role="button" class="btn btn-secondary popover-test" title="Popover title" data-content="Popover body content is set in this attribute.">button</a> triggers a popover on click.</p><hr><h5>Tooltips in a modal</h5><p><a href="#" class="tooltip-test" title="Tooltip">This link</a> and <a href="#" class="tooltip-test" title="Tooltip">that link</a> have tooltips on hover.</p>
</div>

在这里插入图片描述

2.7、使用网格

通过在.modal-body中嵌套.container-fluid,在一个模态中利用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 ml-auto">.col-md-4 .ml-auto</div></div><div class="row"><div class="col-md-3 ml-auto">.col-md-3 .ml-auto</div><div class="col-md-2 ml-auto">.col-md-2 .ml-auto</div></div><div class="row"><div class="col-md-6 ml-auto">.col-md-6 .ml-auto</div></div><div class="row"><div class="col-sm-9">Level 1: .col-sm-9<div class="row"><div class="col-8 col-sm-6">Level 2: .col-8 .col-sm-6</div><div class="col-4 col-sm-6">Level 2: .col-4 .col-sm-6</div></div></div></div></div>
</div>

在这里插入图片描述

2.8、不同模态框的内容

有一堆按钮都触发相同的模态,但内容略有不同?使用事件。relatedTarget和HTML data-*属性(可能通过jQuery)来根据单击的按钮改变模式的内容。

下面是一个现场演示,后面是HTML和JavaScript示例。

<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@mdo">Open modal for @mdo</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@fat">Open modal for @fat</button>
<button type="button" class="btn btn-primary" data-toggle="modal" data-target="#exampleModal" data-whatever="@getbootstrap">Open modal for @getbootstrap</button><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">New message</h5><button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button></div><div class="modal-body"><form><div class="form-group"><label for="recipient-name" class="col-form-label">Recipient:</label><input type="text" class="form-control" id="recipient-name"></div><div class="form-group"><label for="message-text" class="col-form-label">Message:</label><textarea class="form-control" id="message-text"></textarea></div></form></div><div class="modal-footer"><button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button><button type="button" class="btn btn-primary">Send message</button></div></div></div>
</div>
$('#exampleModal').on('show.bs.modal', function (event) {var button = $(event.relatedTarget) // Button that triggered the modalvar recipient = button.data('whatever') // Extract info from data-* attributes// If necessary, you could initiate an AJAX request here (and then do the updating in a callback).// Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.var modal = $(this)modal.find('.modal-title').text('New message to ' + recipient)modal.find('.modal-body input').val(recipient)
})

在这里插入图片描述

2.9、改变动画

$modal-fade-transform变量决定.modal-dialog在模式淡入动画之前的转换状态,$modal-show-transform变量决定.modal-dialog在模式淡入动画结束时的转换状态。

例如,如果你想要一个放大的动画,你可以设置$modal-fade-transform: scale(.8)

2.10、移除动画

对于仅仅出现而不是淡入视图的Modal,请从你的Modal标记中移除.fade类。

<div class="modal" tabindex="-1" aria-labelledby="..." aria-hidden="true">...
</div>

2.11、动态高度

如果一个Modal的高度在它打开的时候改变了,你应该调用$('#myModal').modal('handleUpdate')来重新调整模态的位置,以防出现滚动条。

2.12、Accessibility

一定要添加aria-labelledby="…",引用模态标题,到.modal。另外,你可以用on .modal的咏叹调描述你的模态对话框。注意,你不需要添加role="dialog",因为我们已经通过JavaScript添加了它。

2.13、嵌入YouTube视频

在modal中嵌入YouTube视频需要额外的JavaScript而不是在Bootstrap中自动停止播放和更多。

3、Optional sizes

Modal有三种可选的大小,可以通过放在.modal-dialog对话框中的修饰类来使用。这些大小在某些断点处起作用,以避免在较窄的视图上出现水平滚动条。
在这里插入图片描述
我们没有修饰符类的默认模态构成了中等大小的模态。

<div class="modal-dialog modal-xl">...</div>
<div class="modal-dialog modal-lg">...</div>
<div class="modal-dialog modal-sm">...</div>

在这里插入图片描述

4、用法

模态插件通过数据属性或JavaScript按需切换隐藏内容。它还在<body>中添加了.modal-open来覆盖默认的滚动行为,并生成一个.modal- background来提供一个点击区域,以便在点击Modal外部时取消显示的Modal。

4.1、通过data属性

不写JavaScript就激活一个模态。在控制器元素上设置data-toggle="modal",就像按钮一样,再加上data-target="#foo"href="#foo",以指向要切换的特定模态。

<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>

4.2、通过JavaScript

用一行JavaScript调用一个id为myModal的模态

$('#myModal').modal(options)

4.3、选项

选项可以通过数据属性或JavaScript传递。对于数据属性,将选项名称附加到data-,如data- background =""

在这里插入图片描述

4.4、方法

异步方法和转换
所有API方法都是异步的,并开始转换。它们在转换开始后立即返回给调用者,但在转换结束前返回。此外,对转换组件的方法调用将被忽略。

4.4.1、.modal(options)

激活您的内容作为一个Modal。接受一个可选的选项对象。

$('#myModal').modal({keyboard: false
})

4.4.2、.modal(‘toggle’)

手动切换一个模式。在模态实际显示或隐藏之前返回给调用者(即在shown.bs.modalhidden.bs.modal事件发生之前)。

$('#myModal').modal('toggle')

4.4.3、.modal(‘show’)

手动打开一个模式。在模态实际显示之前返回给调用者(即在shown.bs.modal事件发生之前)。

$('#myModal').modal('show')

4.4.4、.modal(‘hide’)

手动隐藏一个模态。在模态被隐藏之前返回给调用者(即在hidden.bs.modal事件发生之前)。

$('#myModal').modal('hide')

4.4.5、.modal(‘handleUpdate’)

如果一个模态的高度在它打开的时候发生变化,手动重新调整模态的位置(例如,出现滚动条)。

$('#myModal').modal('handleUpdate')

4.4.6、.modal(‘dispose’)

销毁模态。

4.5、事件

Bootstrap的模态类暴露了一些与模态功能挂钩的事件。所有的模态事件都是在模态本身触发的(即在<div class="modal">)。

在这里插入图片描述

$('#myModal').on('hidden.bs.modal', function (event) {// do something...
})

写在最后

如果你感觉文章不咋地//(ㄒoㄒ)//,就在评论处留言,作者继续改进;o_O???
如果你觉得该文章有一点点用处,可以给作者点个赞;\\*^o^*//
如果你想要和作者一起进步,可以微信扫描二维码,关注前端老L~~~///(^v^)\\\~~~
谢谢各位读者们啦(^_^)∠※!!!


http://chatgpt.dhexx.cn/article/OZFeXQWY.shtml

相关文章

Oracle数据迁移

本文主要提及使用exp,imp以及Oracle数据泵等工具如何进行数据迁移&#xff1a; 一、数据迁移工具 1、数据迁移工具 &#xff08;1&#xff09;数据泵 &#xff08;2&#xff09;外部表&#xff1a;external table &#xff08;3&#xff09;数据加载工具&#xff1a;sqllo…

MySQL数据库- 几种数据迁移的方法详解都在这了!看完必懂

数据迁移的几种方式 - MySQL数据库 本文关键字&#xff1a;MySQL、数据库、数据迁移、导入、导出 文章目录 数据迁移的几种方式 - MySQL数据库 一、数据迁移 1. 数据的生命周期2. 数据迁移的发生二、数据导出 1. 命令方式2. 软件方式三、数据导入 1. 命令方式2. 软件方式四、…

数据迁移方法

在我的《高并发系统设计目标之可扩展性》博文中提到&#xff0c;随着业务的发展&#xff0c;我们会沿着AKF的Y轴进行微服务化的改造。但是沿着Y轴的重构过程中往往涉及到分库分表。那么这时就需要进行数据库的迁移了。沿着AKF的Z轴也类似&#xff0c;那么迁移有什么原则呢&…

如何高效地进行大规模数据迁移?

导读 我们在做一次系统业务模型重构的时候&#xff0c;往往会遇到把旧模型表中的数据迁移到新模型表中&#xff0c;如果这时候&#xff0c;我们旧表中的数据规模已达到千万级以上&#xff0c;那么&#xff0c;这个从旧表迁移到新表的过程会非常漫长&#xff0c;而业务仍需快速推…

电脑数据怎么迁移?

“最近我的电脑越来越卡&#xff0c;运行程序时还会出现卡死奔溃的现象&#xff0c;陪伴我多年的电脑到了退休的时候了。购买了一台新款的笔记本电脑&#xff0c;打开软件运行多么的流畅&#xff0c;别提多高兴了&#xff01;可是&#xff0c;我想把旧电脑的数据导入到新电脑怎…

数据库整体迁移

1.迁移方法概述: 使用Navicat Premium 分别与源数据库和目标数据库建立连接,然后借助Navicat Premium自带的数据传输功能,实现Oracle数据库的迁移.其实跟从MySQL数据库迁移到oracle数据库是一个套路. O(∩_∩)O~ 听起来,是不是很简单,其实就是很简单!下边我就讲一下具体实现的细…

数据库迁移的方法

数据库迁移的方法 我们今天以mysql为例&#xff0c;讲讲数据库迁移的四种方法。 1、将数据库倒出为sql文件&#xff0c;再重新导入&#xff08;推荐&#xff09;。 首先将mysql数据库锁定&#xff0c;并将内存中的数据写入磁盘。 flush tables with read lock ; 用mysqldump将t…

数据迁移——技术选型

日常我们在开发中&#xff0c;随着业务需求的变更&#xff0c;重构系统是很常见的事情。重构系统常见的一个场景是变更底层数据模型与存储结构。这种情况下就要对数据进行迁移&#xff0c;从而使业务能正常运行。 背景如下&#xff1a;老系统中使用了mongo数据库&#xff0c;由…

Oracle数据迁移MySQL

前言: 现今&#xff0c;Oracle数据迁移MySQL的需求已经越来越普遍&#xff0c;主要的迁移场景大致可以分为三类&#xff0c;第一类是涉及小表以及少量表的一次性迁移&#xff0c;无需进行增量同步&#xff0c;第二类是涉及大表以及多表的一次性迁移&#xff0c;第三类是涉及增…

电脑之间如何迁移数据?数据迁移方法描述

电脑之间如何迁移数据&#xff1f;当更换电脑时&#xff0c;很多人需要做的第一件事&#xff0c;就是将旧电脑的数据通过外置存储设备等拷贝到新电脑上&#xff0c;并且还要在新电脑上重新安装应用程序&#xff0c;步骤繁琐&#xff0c;耗费了大量的时间和精力不说&#xff0c;…

DB数据迁移方案

互联网系统&#xff0c;经常会有数据迁移的需求。系统从机房迁移到云平台&#xff0c;从一个云平台迁移到另一个云平台&#xff0c;系统重构后表结构发生了变化&#xff0c;分库分表&#xff0c;更换数据库选型等等&#xff0c;很多场景都需要迁移数据。 在互联网行业&#xf…

【OceanBase】四种不同的数据迁移方式

前言 OceanBase 已连续 9 年稳定支撑双 11&#xff0c;创新推出“三地五中心”城市级容灾新标准&#xff0c;在被誉为“数据库世界杯”的 TPC-C 和 TPC-H 测试上都刷新了世界纪录。自研一体化架构&#xff0c;兼顾分布式架构的扩展性与集中式架构的性能优势&#xff0c;用一套…

数据迁移介绍

数据迁移方案 数据迁移框架有几个比较有名应用比较广泛的开源项目&#xff1a;阿里datax&#xff0c;apache sqoop以及Pentaho kettle。这三个框架整体上工作原理类似&#xff0c;下面介绍阿里datax数据迁移框架。 对旧系统进行了重构&#xff0c;就需要把原来的数据迁移到新数…

代码技巧——数据迁移方案【建议收藏】

开发工作中&#xff0c;可能会遇到如"大表拆分"、"跨库数据迁移"等场景&#xff0c;本文介绍互联网常见架构下的数据迁移方案及实现&#xff1b; 1. 数据迁移的业务场景 以下是需要数据迁移的场景业务场景&#xff1b; 1.1 大表拆分 由于历史原因&…

【Pytorch】Label Smoothing

理论介绍可以参考 【Inception-v3】《Rethinking the Inception Architecture for Computer Vision》 中的 4.5 Model Regularization via Label Smoothing 本质就是用右边&#xff08;意会下就行&#xff09;的标签替换左边的 one-hot 编码形式&#xff0c;让网络别那么愤青&…

关于label smoothing(标签平滑)

目的&#xff1a; label smoothing常用于分类任务&#xff0c;防止模型在训练中过拟合&#xff0c;提高模型的泛化能力。 意义&#xff1a; 对于分类问题&#xff0c;我们通常使用one-hot编码&#xff0c;“非黑即白”&#xff0c;标签向量的目标类别概率为1&#xff0c;非目标…

【AI面试】hard label与soft label,Label Smoothing Loss 和 Smooth L1 Loss

往期文章: AI/CV面试,直达目录汇总【AI面试】NMS 与 Soft NMS 的辨析【AI面试】L1 loss、L2 loss和Smooth L1 Loss,L1正则化和L2正则化在一次询问chatGPT时候,在他的回答中,由smooth L1联想提到了Label Smoothing Loss 。我把问题贴到下面,和chatGPT的回答,供你参考。不…

标签平滑(label smoothing)

目录 1.标签平滑主要解决什么问题&#xff1f; 2.标签平滑是怎么操作的&#xff1f; 3.标签平滑公式 4.代码实现 标签平滑&#xff08;label smoothing&#xff09;出自GoogleNet v3 关于one-hot编码的详细知识请见&#xff1a;One-hot编码 1.标签平滑主要解决什么问题&…

指数平滑法 Exponential Smoothing

指数平滑法 Exponential Smoothing 指数平滑法&#xff0c;用于中短期经济发展趋势预测。 1 时间序列分析基础知识 1.1 时间序列分析前提假设 时间序列分析一般假设我们获得的数据在时域上具有一定的相互依赖关系&#xff0c;例如股票价格在t时刻很高&#xff0c;那么在t1时…

label smoothing(标签平滑)

label smoothing是一种在分类问题中&#xff0c;防止过拟合的方法。 label smoothing&#xff08;标签平滑&#xff09; 交叉熵损失函数在多分类任务中存在的问题label smoothing&#xff08;标签平滑&#xff09;参考资料 交叉熵损失函数在多分类任务中存在的问题 多分类任务…