文章目录[隐藏]
模态框经过了优化,更加灵活,以弹出对话框的形式出现,具有最小和最实用的功能集。模态框(Modal)是覆盖在父窗体上的子窗体。通常,目的是显示来自一个单独的源的内容,可以在不离开父窗体的情况下有一些互动。子窗体可提供信息、交互等。
如果您想要单独引用该插件的功能,那么您需要引用
modal.js
。或者,正如 Bootstrap 插件概览 一章中所提到,您可以引用bootstrap.js
或压缩版的bootstrap.min.js
。
不支持模态框重叠
千万不要在一个模态框上重叠另一个模态框。要想同时支持多个模态框,需要自己写额外的代码来实现。
模态框的 HTML 代码放置的位置
务必将模态框的 HTML 代码放在文档的最高层级内(也就是说,尽量作为 body 标签的直接子元素),以避免其他组件影响模态框的展现和/或功能。
对于移动设备的附加说明
这里提供了在移动设备上使用模态框有一些附加说明。
静态实例
以下模态框包含了模态框的头、体和一组放置于底部的按钮。
源码:
<div class="modal fade"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button> <h4 class="modal-title">Modal title</h4> </div> <div class="modal-body"> <p>One fine body…</p> </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="button" class="btn btn-primary">Save changes</button> </div> </div><!-- /.modal-content --> </div><!-- /.modal-dialog --> </div><!-- /.modal -->
动态实例
点击下面的按钮即可通过 JavaScript 启动一个模态框。此模态框将从上到下、逐渐浮现到页面前。
源码:
<!-- Button trigger modal --> <button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal"> 动态模态框 </button> <!-- Modal --> <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true"> <div class="modal-dialog"> <div class="modal-content"> <div class="modal-header"> <button type="button" class="close" data-dismiss="modal"><span aria-hidden="true">×</span><span class="sr-only">Close</span></button> <h4 class="modal-title" id="myModalLabel">Modal title</h4> </div> <div class="modal-body"> 你可以在这里添加你需要的内容。 </div> <div class="modal-footer"> <button type="button" class="btn btn-default" data-dismiss="modal">Close</button> <button type="button" class="btn btn-primary">Save changes</button> </div> </div> </div> </div>
增强模态框的可访问性
务必为
.modal
添加role="dialog"
属性,aria-labelledby="myModalLabel"
属性用于只想模态框的标题栏,aria-hidden="true"
用于通知辅助性工具略过模态框的DOM
元素。另外,你还应该通过
aria-describedby
属性为模态框.modal
添加描述性信息。
嵌入
YouTube
视频(天朝无用)在模态框中嵌入
YouTube
视频需要增加一些额外的JavaScript
代码,用于自动停止重放等功能,这些代码并没有在Bootstrap
中提供。请参考这份发布在Stack Overflow
上的文章。
可选尺寸
模态框提供了两个可选尺寸,通过为 .modal-dialog
增加一个样式调整类实现。
源码:
<!-- Large modal --> <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-lg">Large modal</button> <div class="modal fade bs-example-modal-lg" tabindex="-1" role="dialog" aria-labelledby="myLargeModalLabel" aria-hidden="true"> <div class="modal-dialog modal-lg"> <div class="modal-content"> ... </div> </div> </div> <!-- Small modal --> <button type="button" class="btn btn-primary" data-toggle="modal" data-target=".bs-example-modal-sm">Small modal</button> <div class="modal fade bs-example-modal-sm" tabindex="-1" role="dialog" aria-labelledby="mySmallModalLabel" aria-hidden="true"> <div class="modal-dialog modal-sm"> <div class="modal-content"> ... </div> </div> </div>
禁止动画效果
如果你不需要模态框弹出时的动画效果(淡入淡出效果),删掉 .fade
类即可。
<div class="modal" tabindex="-1" role="dialog" aria-labelledby="" aria-hidden="true"> ... </div>
用法
通过 data
属性或 JavaScript
调用模态框插件,可以根据需要动态展示隐藏的内容。模态框弹出时还会为 <body> 元素添加 .modal-open
类,从而覆盖页面默认的滚动行为,并且还会自动生成一个 .modal-backdrop
元素用于提供一个可点击的区域,点击此区域就即可关闭模态框。
您可以切换模态框(Modal
)插件的隐藏内容:
通过 data
属性:
在控制器元素(比如按钮或者链接)上设置属性 data-toggle="modal"
,同时设置 data-target="#identifier"
或 href="#identifier"
来指定要切换的特定的模态框(带有 id="identifier"
)。
<button type="button" data-toggle="modal" data-target="#myModal">Launch modal</button>
通过 JavaScript
:
使用这种技术,您可以通过简单的一行 JavaScript
来调用带有 id="identifier"
的模态框:
$('#identifier').modal(options)
方法
.modal(options)
将页面中的某块内容作为模态框激活。接受可选参数 object
。
$('#myModal').modal({ keyboard: false })
.modal('toggle')
手动打开或关闭模态框。在模态框显示或隐藏之前返回到主调函数中(也就是,在触发 shown.bs.modal
或 hidden.bs.modal
事件之前)。
$('#myModal').modal('toggle')
.modal('show')
手动打开模态框。在模态框显示之前返回到主调函数中 (也就是,在触发 shown.bs.modal
事件之前)。
$('#myModal').modal('show')
.modal('hide')
手动隐藏模态框。在模态框隐藏之前返回到主调函数中 (也就是,在触发 hidden.bs.modal
事件之前)。
$('#myModal').modal('hide')