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方法都是 异步 然后开始 过渡 。转换开始后,他们会立即返回给呼叫者,但 在结束之前 。此外,在 过渡组件将被忽略 .

有关更多信息,请参见我们的JavaScript文档。 .


.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.