Bootstrap/docs/4.5/components/modal
模态
使用Bootstrap的JavaScript模式插件将对话框添加到您的网站,以获取灯箱,用户通知或完全自定义的内容。
这个怎么运作
在开始使用Bootstrap的模式组件之前,请务必阅读以下内容,因为我们的菜单选项最近已更改。
- 使用HTML,CSS和JavaScript构建模态。 它们位于文档中所有其他内容的上方,并从
<body>
因此模式内容会滚动。 - 单击模式“背景”将自动关闭模式。
- Bootstrap一次仅支持一个模式窗口。 不支持嵌套模式,因为我们认为它们是糟糕的用户体验。
- 模态使用
position: fixed
,有时可能对其渲染有些特殊。 尽可能将模式HTML放在顶级位置,以免受到其他元素的潜在干扰。 嵌套广告时,您可能会遇到问题.modal
在另一个固定元素内。 - 再次,由于
position: fixed
,在移动设备上使用模态有一些警告。 请参阅我们的浏览器支持文档 详情。 - 由于HTML5如何定义其语义, the
autofocus
HTML属性 对Bootstrap模态无效。 为了达到相同的效果,请使用一些自定义JavaScript:
该组件的动画效果取决于 prefers-reduced-motion
媒体查询。 见 辅助功能文档中的慢动部分 .
继续阅读有关演示和使用指南。
例子
模态组件
下面是一个 静态的 模态示例(表示其 position
and display
已被覆盖)。 包括模态标题,模态主体(必需 padding
)和模式页脚(可选)。 我们要求您在可能的情况下在模式标头中包含dismiss操作,或提供另一个显式的dismiss操作。
<div class="modal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title"> 模态标题 </h5>
<button aria-label="Close" class="close" data-dismiss="modal" type="button">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<p> 模态文本在这里。 </p>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" data-dismiss="modal" type="button"> 关 </button>
<button class="btn btn-primary" type="button"> 保存更改 </button>
</div>
</div>
</div>
</div>
现场演示
通过单击下面的按钮来切换工作模式演示。 它将向下滑动并从页面顶部淡入。
<button class="btn btn-primary" data-target="#exampleModalLive" data-toggle="modal" type="button"> 启动演示模态 </button>
静态背景
当背景设置为静态时,在其外部单击时,模式不会关闭。 单击下面的按钮尝试。
<button class="btn btn-primary" data-target="#staticBackdropLive" data-toggle="modal" type="button"> 启动静态背景模态 </button>
滚动长内容
当模式对用户的视口或设备而言变得太长时,它们将独立于页面本身滚动。 请尝试下面的演示,以了解我们的意思。
<button class="btn btn-primary" data-target="#exampleModalLong" data-toggle="modal" type="button"> 启动演示模态 </button>
您还可以创建一个可滚动的模态,该模态允许通过添加 .modal-dialog-scrollable
to .modal-dialog
.
<button class="btn btn-primary" data-target="#exampleModalScrollable" data-toggle="modal" type="button"> 启动演示模态 </button>
垂直居中
Add .modal-dialog-centered
to .modal-dialog
使模态垂直居中。
<button class="btn btn-primary" data-target="#exampleModalCenter" data-toggle="modal" type="button"> 垂直居中模态 </button>
<button class="btn btn-primary" data-target="#exampleModalCenteredScrollable" data-toggle="modal" type="button"> 垂直居中的可滚动模式 </button>
工具提示和弹出窗口
提示 and 约夏克布丁 可以根据需要放置在模态中。 关闭模态后,其中的所有工具提示和弹出窗口也将自动关闭。
<button class="btn btn-primary" data-target="#exampleModalPopovers" data-toggle="modal" type="button"> 启动演示模态 </button>
使用网格
通过嵌套在模态内利用Bootstrap网格系统 .container-fluid
在 .modal-body
。然后,像在其他任何地方一样使用普通的网格系统类。
<button class="btn btn-primary" data-target="#gridSystemModal" data-toggle="modal" type="button"> 启动演示模态 </button>
各种模态内容
是否有一堆按钮都以相同的内容触发相同的模式? Use event.relatedTarget
and HTML data-*
属性 (可能 通过jQuery )以更改模式内容,具体取决于所单击的按钮。
下面是一个实时演示,后面是示例HTML和JavaScript。 欲获得更多信息, 阅读模式事件文档 有关详细信息 relatedTarget
.
<button class="btn btn-primary" data-target="#exampleModal" data-toggle="modal" data-whatever="@mdo" type="button"> @mdo的开放模式 </button>
<button class="btn btn-primary" data-target="#exampleModal" data-toggle="modal" data-whatever="@fat" type="button"> @fat的开放模式 </button>
<button class="btn btn-primary" data-target="#exampleModal" data-toggle="modal" data-whatever="@getbootstrap" type="button"> @getbootstrap的开放模式 </button>
<div aria-hidden="true" aria-labelledby="exampleModalLabel" class="modal fade" id="exampleModal" tabindex="-1">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel"> 新消息 </h5>
<button aria-label="Close" class="close" data-dismiss="modal" type="button">
<span aria-hidden="true">×</span>
</button>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<label class="col-form-label" for="recipient-name"> 接受者: </label>
<input class="form-control" id="recipient-name" type="text"/>
</div>
<div class="form-group">
<label class="col-form-label" for="message-text"> 信息: </label>
<textarea class="form-control" id="message-text"></textarea>
</div>
</form>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" data-dismiss="modal" type="button"> 关 </button>
<button class="btn btn-primary" type="button"> 发信息 </button>
</div>
</div>
</div>
</div>
改变动画
The $modal-fade-transform
变量确定的变换状态 .modal-dialog
在模式淡入动画之前, $modal-show-transform
变量确定 .modal-dialog
在模式淡入动画的末尾。
例如,如果要放大动画,可以设置 $modal-fade-transform: scale(.8)
.
删除动画
对于仅显示而不是淡入查看的模态,请删除 .fade
模态标记中的类。
动态高度
如果模态的高度在打开时发生变化,则应调用 $('#myModal').modal('handleUpdate')
在出现滚动条的情况下重新调整模式的位置。
无障碍
确保添加 aria-labelledby="..."
,引用模式标题 .modal
。另外,您可以通过以下方式来描述模式对话框 aria-describedby
on .modal
。请注意,您不需要添加 role="dialog"
因为我们已经通过JavaScript添加了它。
嵌入YouTube视频
以模态形式嵌入YouTube视频需要Bootstrap中没有的其他JavaScript才能自动停止播放等等。 看到这篇有用的Stack Overflow帖子 欲获得更多信息。
可选尺寸
模态具有三种可选尺寸,可通过修饰符类将其放置在 .modal-dialog
。这些大小会在某些断点处插入,以避免在较窄的视口上出现水平滚动条。
Size | 类 | 模态最大宽度 |
---|---|---|
小 | .modal-sm
|
300px
|
默认 | None | 500px
|
大 | .modal-lg
|
800px
|
超大 | .modal-xl
|
1140px
|
我们不带修饰符类别的默认模态构成“中等”尺寸模态。
<button class="btn btn-primary" data-target="#exampleModalXl" data-toggle="modal" type="button"> 特大模态 </button>
<button class="btn btn-primary" data-target="#exampleModalLg" data-toggle="modal" type="button"> 大模态 </button>
<button class="btn btn-primary" data-target="#exampleModalSm" data-toggle="modal" type="button"> 小模态 </button>
用法
模态插件通过数据属性或JavaScript按需切换隐藏的内容。 它还增加了 .modal-open
到了 <body>
覆盖默认滚动行为并生成一个 .modal-backdrop
提供一个单击区域,以在模态外部单击时消除显示的模态。
通过数据属性
无需编写JavaScript即可激活模式。 Set data-toggle="modal"
在控制器元素(如按钮)上,以及 data-target="#foo"
or href="#foo"
以特定的模式进行切换。
通过JavaScript
用ID调用模式 myModal
用一行JavaScript:
选项
可以通过数据属性或JavaScript传递选项。 对于数据属性,将选项名称附加到 data-
,如 data-backdrop=""
.
Name | Type | 默认 | 描述 |
---|---|---|---|
背景 | 布尔值或字符串 'static'
|
true | 包括模式背景元素。 或者,指定 static 对于无法关闭点击模式的背景。
|
键盘 | 布尔 | true | 按下退出键时关闭模式 |
焦点 | 布尔 | true | 初始化时将重点放在模态上。 |
show | 布尔 | true | 初始化时显示模态。 |
方法
异步方法和转换
所有API方法都是 异步 然后开始 过渡 。转换开始后,他们会立即返回给呼叫者,但 在结束之前 。此外,在 过渡组件将被忽略 .
.modal(options)
将您的内容激活为模式。 接受可选选项 object
.
.modal('toggle')
手动切换模态。 在实际显示或隐藏模式之前返回到调用者 (即 之前 shown.bs.modal
or hidden.bs.modal
事件发生)。
.modal('show')
手动打开模式。 在实际显示模式之前返回到调用者 (即 之前 shown.bs.modal
事件发生)。
.modal('hide')
手动隐藏模式。 在实际隐藏模式之前返回调用者 (即 之前 hidden.bs.modal
事件发生)。
.modal('handleUpdate')
如果模态的高度在打开时发生变化,请手动重新调整模态的位置(即 如果出现滚动条)。
.modal('dispose')
销毁元素的模态。
活动
Bootstrap的模态类公开了一些事件,可以挂接到模态功能上。 所有模态事件都会向模态本身触发(即 在 <div class="modal">
).
事件类型 | 描述 |
---|---|
show.bs.modal | 当 show 实例方法被调用。 如果是由点击引起的,则clicked元素可用作 relatedTarget 事件的属性。
|
显示.bs.modal | 当使模式对用户可见时将触发此事件(将等待CSS转换完成)。 如果是由点击引起的,则clicked元素可用作 relatedTarget 事件的属性。
|
hide.bs.modal | 当 hide 实例方法已被调用。
|
隐藏的.bs。模态的 | 在向用户隐藏模式后,将触发此事件(将等待CSS转换完成)。 |
hidePrevented.bs.modal | 显示模态时会触发此事件,其背景是 static 使用键盘选项或 data-keyboard 调成 false .
|