BOOTSTRAP 基础教程
BOOTSTRAP 高级教程
BOOTSTRAP 示例
BOOTSTRAP 档案

Bootstrap 模态

在本教程中,您将学习如何使用 Bootstrap 创建模态框。

使用 Bootstrap 创建模态

Modal 基本上是一个对话框或弹出窗口,用于向用户提供重要信息或提示用户在继续之前采取必要的操作。 模态被广泛用于警告用户会话超时等情况,或在执行任何关键操作(如保存或删除重要数据)之前收到他们的最终确认。

您可以使用 Bootstrap 模态插件轻松创建非常智能和灵活的对话框。 以下示例概述了创建简单模态的基本结构,该模态具有标题、消息正文和包含用户操作按钮的页脚。

示例

jQuery JavaScript
Try this code »
<!-- jQuery 代码(在页面加载时显示模态) -->
<script>
$(document).ready(function() {
    $("#myModal").modal("show");
});
</script>

<!-- 模态 HTML -->
<div id="myModal" class="modal fade" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Confirmation</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body">
                <p>Do you want to save changes to this document before closing?</p>
                <p class="text-secondary"><small>If you don't save, your changes will be lost.</small></p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
                <button type="button" class="btn btn-primary">Save changes</button>
            </div>
        </div>
    </div>
</div>
<!-- JavaScript Code (to Show Modal on Page Load) -->
<script>
document.addEventListener("DOMContentLoaded", function() {
    var myModal = new bootstrap.Modal(document.getElementById("myModal"));
    myModal.show();
});
</script>

<!-- 模态 HTML -->
<div id="myModal" class="modal fade" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Confirmation</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body">
                <p>Do you want to save changes to this document before closing?</p>
                <p class="text-secondary"><small>If you don't save, your changes will be lost.</small></p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
                <button type="button" class="btn btn-primary">Save changes</button>
            </div>
        </div>
    </div>
</div>

— 如果您尝试上面的示例,它将在通过 JavaScript 完全加载 DOM 时自动启动模态窗口。 输出将如下所示:

提示: 始终尝试将模态 HTML 放在文档中的顶级位置,最好在关闭 <body> 标记(即 </body>)之前,以避免其他元素的干扰,否则可能会影响模态的外观 或功能。

查看片段部分以获取一些设计精美的 Bootstrap 模态的示例。


通过数据属性激活模态

您可以通过单击按钮或通过数据属性链接来激活Bootstrap模态,而无需编写任何 JavaScript 代码。 看看下面的例子,看看它是如何工作的:

<!-- 按钮 HTML (触发模态) -->
<a href="#myModal" class="btn btn-lg btn-primary" data-bs-toggle="modal">Launch Demo Modal</a>
    
<!-- 模态 HTML -->
<div id="myModal" class="modal fade">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Confirmation</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body">
                <p>Do you want to save changes to this document before closing?</p>
                <p class="text-secondary"><small>If you don't save, your changes will be lost.</small></p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
                <button type="button" class="btn btn-primary">Save changes</button>
            </div>
        </div>
    </div>
</div>

上面的示例在单击"启动演示模态"按钮时启动模态窗口。 让我们一一浏览这个模态代码的每一部分,以便更好地理解。

代码说明

要通过数据属性激活Bootstrap模态,我们基本上需要两个组件 — 控制器元素,如按钮或链接,以及模态元素本身。

  • 文档中每个模态的最外层容器必须具有唯一的 id(在本例中为 id="myModal"第5行),以便它可以通过 data-bs-target(用于按钮)或 href(用于超链接)定位 ) 控制器元素的属性(第2行)。
  • 需要在控制器元素(第2行)上添加属性 data-bs-toggle="modal",如按钮或锚点,以及属性 data-bs-target="#myModal"href="#myModal" 以针对特定模态进行切换。
  • .modal-dialog 类(第6行)设置模态框的宽度以及水平和垂直对齐方式。 而 .modal-content 类设置文本和背景颜色、边框、圆角等样式。

其余部分是不言自明的,例如 .modal-header 元素定义了模态的标题,通常包含模态标题和关闭按钮,而 .modal-body 元素包含文本等实际内容 、图像、表单等,.modal-footer 元素定义通常包含用户操作按钮的页脚。

注意: .modal 元素上的 .fade 类在显示和隐藏模态窗口的同时添加了淡入淡出和滑动的动画效果。 如果您想要简单地出现而没有任何效果的模态,您可以删除此类。 此外,当模态对于用户的视口或设备而言变得太长时,它们会独立于页面本身滚动。


通过 JavaScript 激活 Modals

您还可以通过 JavaScript 激活 Bootstrap 模态窗口 — 只需在 JavaScript 代码中使用模态 idclass selector 调用 modal() Bootstrap 方法。

示例

jQuery JavaScript
Try this code »
<script>
$(document).ready(function() {
    $("#myBtn").click(function() {
        $("#myModal").modal("show");
    });
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var btn = document.getElementById("myBtn");

    btn.addEventListener("click", function() {
        var myModal = new bootstrap.Modal(document.getElementById("myModal"));
        myModal.show();
    });
});
</script>

更改模态框的大小

Bootstrap 为您提供了进一步放大或缩小模式的选项。 您可以通过分别在 .modal-dialog 上添加额外的 .modal-sm.modal-lg.modal-xl 类来创建小型、大型和超大型模式。 这是一个例子:

<!-- Extra Large modal -->
<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#extraLargeModal">Extra Large modal</button>
    
<div id="extraLargeModal" class="modal fade" tabindex="-1" role="dialog">
    <div class="modal-dialog modal-xl">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Extra Large Modal</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>          
            </div>
            <div class="modal-body">
                <p>Add the <code>.modal-xl</code> class on <code>.modal-dialog</code> to create this extra large modal.</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
                <button type="button" class="btn btn-primary">OK</button>
            </div>
        </div>
    </div>
</div>

<!-- 大型模态 -->
<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#largeModal">Large modal</button>
    
<div id="largeModal" class="modal fade" tabindex="-1" role="dialog">
    <div class="modal-dialog modal-lg">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Large Modal</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>              
            </div>
            <div class="modal-body">
                <p>Add the <code>.modal-lg</code> class on <code>.modal-dialog</code> to create this large modal.</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
                <button type="button" class="btn btn-primary">OK</button>
            </div>
        </div>
    </div>
</div>
    
<!-- 小模态 -->
<button class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#smallModal">Small modal</button>
    
<div id="smallModal" class="modal fade" tabindex="-1" role="dialog">
    <div class="modal-dialog modal-sm">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Small Modal</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>       
            </div>
            <div class="modal-body">
                <p>Add the <code>.modal-sm</code> class on <code>.modal-dialog</code> to create this small modal.</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
                <button type="button" class="btn btn-primary">OK</button>
            </div>
        </div>
    </div>
</div>

提示:默认模态的最大宽度为500px,而小、大和超大模态的最大宽度分别为 300px, 800px, 1140px


根据触发按钮更改模态内容

一个网页上的多个模态通常具有几乎相同的内容,但有细微的差别。

您可以使用模态事件基于相同的模态 HTML 创建稍微不同的模态窗口。 下面的示例将向您展示如何根据触发按钮的 data-title 属性值更改模态窗口的标题。

示例

jQuery JavaScript
Try this code »
<script>
$(document).ready(function() {
    $("#myModal").on("show.bs.modal", function(event) {
        // 获取触发模态的按钮
        var button = $(event.relatedTarget);

        // 从自定义 data-* 属性中提取值
        var titleData = button.data("title");

        // 改变模态标题
        $(this).find(".modal-title").text(titleData);
    });
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var myModal = document.getElementById("myModal");

    myModal.addEventListener("show.bs.modal", function(event) {        
        // 获取触发模态的按钮
        var button = event.relatedTarget;
        
        // 从自定义 data-* 属性中提取值
        var titleData = button.getAttribute("data-title");

        // 改变模态标题
        myModal.querySelector(".modal-title").innerText = titleData;
    });
});
</script>

创建垂直居中的模态

只需将类 .modal-dialog-centered 添加到 .modal-dialog 元素即可垂直居中模态。 如果模态的内容很长,您可以另外在 .modal-dialog 上应用 .modal-dialog-scrollable 类以使模态正文可滚动。 这是一个例子:

<!-- 按钮 HTML (触发模态) -->
<a href="#modalCenter" role="button" class="btn btn-primary" data-bs-toggle="modal">Vertically Centered Modal</a>

<!-- 模态 HTML -->
<div id="modalCenter" class="modal fade" tabindex="-1">
    <div class="modal-dialog modal-dialog-centered">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Vertical Alignment Demo</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body">
                <p>Lorem ipsum dolor sit amet, consectetur elit...</p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
                <button type="button" class="btn btn-primary">OK, Got it!</button>
            </div>
        </div>
    </div>
</div>

在模态中使用网格

您还可以利用 Bootstrap 网格系统 在模态中创建网格布局。 简单地说,使用 .row 类创建行并使用 .col-*.col-sm-*.col-md-*.col-lg-*< /code> 和 .col-xl-* 类在 .modal-body 中创建列。 让我们看一个例子:

<div id="myModal" class="modal fade" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Send Us a Message</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body">
                <div class="row">
                    <div class="col-6">
                        <div class="form-group">
                            <label>First Name</label>
                            <input type="text" class="form-control">
                        </div>
                    </div>
                    <div class="col-6">
                        <div class="form-group">
                            <label>Last Name</label>
                            <input type="text" class="form-control">
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="col-12">
                        <div class="form-group">
                            <label>Email</label>
                            <input type="email" class="form-control">
                        </div>
                    </div>
                </div>
                <div class="row">
                    <div class="col-12">
                        <div class="form-group">
                            <label>Comments</label>
                            <textarea class="form-control"></textarea>
                        </div>
                    </div>
                </div>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
                <button type="button" class="btn btn-primary">Send Email</button>
            </div>
        </div>
    </div>
</div>

通过 Ajax 在 Modal 中加载内容

您还可以通过 Ajax 在 Bootstrap 模式中加载远程内容。

在下面的示例中,模态正文中的内容将在使用 jQuery load() 方法和 Bootstrap show.bs.modal 事件激活时从远程文件插入。

示例

jQuery JavaScript
Try this code »
<!-- jQuery Code (to Load Content via Ajax) -->
<script>
$(document).ready(function() {
    $("#myModal").on("show.bs.modal", function() {
        // 将返回的 HTML 放入被选元素中
        $(this).find(".modal-body").load("remote.asp");
    });
});
</script>

<!-- 按钮 HTML (触发模态) -->
<button type="button" class="btn btn-lg btn-primary" data-bs-toggle="modal" data-bs-target="#myModal">Launch Demo Modal</button>
    
<!-- 模态 HTML -->
<div id="myModal" class="modal fade" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Ajax Loading Demo</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body">
                <!-- 内容将从“remote.php”文件加载到这里 -->
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
                <button type="button" class="btn btn-primary">OK, Got it!</button>
            </div>
        </div>
    </div>
</div>
<!-- JavaScript Code (to Load Content via Ajax) -->
<script>
// 定义从远程文件中获取内容的函数
function loadContent(url) {
    var httpRequest = new XMLHttpRequest();

    httpRequest.onreadystatechange = function() {
        // 处理服务器响应
        if(httpRequest.readyState === XMLHttpRequest.DONE) {
            if(httpRequest.status === 200) {
                updateModal(httpRequest.responseText);
            } else {
                alert("There was a problem with the request.");
            }
        }
    };

    httpRequest.open("GET", url, true);
    httpRequest.send();
};

// 定义函数以根据响应更新模态
function updateModal(response) {
    var myModal = document.getElementById("myModal");
	myModal.querySelector(".modal-body").innerHTML = response;

}

// 激活时以模态加载内容
document.addEventListener("DOMContentLoaded", function() {
    myModal.addEventListener("show.bs.modal", function() {
        loadContent("remote.asp");
    });
});
</script>

<!-- 按钮 HTML (触发模态) -->
<button type="button" class="btn btn-lg btn-primary" data-bs-toggle="modal" data-bs-target="#myModal">Launch Demo Modal</button>
    
<!-- 模态 HTML -->
<div id="myModal" class="modal fade" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Ajax Loading Demo</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body">
                <!-- 内容将从“remote.php”文件加载到这里 -->
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
                <button type="button" class="btn btn-primary">OK, Got it!</button>
            </div>
        </div>
    </div>
</div>

提示:您也可以根据需要将工具提示弹出框放置在模态框内。 当模态框关闭时,其中的任何工具提示和弹出框也会自动关闭。


可以将某些选项传递给 modal() Bootstrap 方法以自定义模式的功能。 选项可以通过数据属性或 JavaScript 传递。

要通过数据属性设置模态选项,只需将选项名称附加到 data-bs-,例如 data-bs-backdrop="static", data-bs-keyboard="false",等等。

名称 类型 默认值 说明
backdrop boolean
or the string 'static'
true 包括一个模态背景(黑色覆盖区域)元素。 或者, 您可以指定 static 作为背景,它不会在点击时关闭模式。
keyboard boolean true 按下退出键时关闭模式窗口。
focus boolean true 初始化时将焦点放在模态框上。
show boolean true 在初始化或激活时显示模态。

数据属性为设置模式选项提供了一种简单的方法,但是 JavaScript 是更可取的方法,因为它可以防止您重复工作。 请参阅下面方法部分中的 传递选项 示例,了解如何使用 JavaScript 为模式设置选项。

在下面的示例中,我们将 backdrop 选项设置为staticline no-5),以防止在单击模式外部(即黑色覆盖区域)时关闭模式。

<!-- 按钮 HTML (触发模态) -->
<button type="button" class="btn btn-lg btn-primary" data-bs-target="#myModal" data-bs-toggle="modal">Launch Demo Modal</button>

<!-- 模态 HTML -->
<div id="myModal" class="modal fade" data-bs-backdrop="static" tabindex="-1">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h5 class="modal-title">Confirmation</h5>
                <button type="button" class="btn-close" data-bs-dismiss="modal"></button>
            </div>
            <div class="modal-body">
                <p>Do you want to save changes to this document before closing?</p>
                <p class="text-secondary"><small>If you don't save, your changes will be lost.</small></p>
            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cancel</button>
                <button type="button" class="btn btn-primary">Save changes</button>
            </div>
        </div>
    </div>
</div>

Methods

这些是标准 bootstrap 程序的模态方法:

传递选项

您还可以使用选项对象将 options 传递给模态。

让我们试试下面的例子,当用户点击背景(即模态框后面的黑色覆盖区域)时,它会阻止模态框关闭。

示例

jQuery JavaScript
Try this code »
<script>
$(document).ready(function() {
    $("#myModal").modal({
        backdrop: "static"
    });
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var myModal = new bootstrap.Modal(document.getElementById("myModal"), {
        backdrop: "static"
    });
});
</script>

以下示例将阻止模式在按下退出键时关闭。

示例

jQuery JavaScript
Try this code »
<script>
$(document).ready(function() {
    $("#myModal").modal({
        keyboard: false
    });
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var myModal = new bootstrap.Modal(document.getElementById("myModal"), {
        keyboard: false
    });
});
</script>

toggle

此方法可用于手动切换模态窗口。

示例

jQuery JavaScript
Try this code »
<script>
$(document).ready(function() {
    $("#myBtn").click(function() {
        $("#myModal").modal("toggle");
    });
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var btn = document.getElementById("myBtn");
    var myModal = new bootstrap.Modal(document.getElementById("myModal"));
    
    btn.addEventListener("click", function() {        
        myModal.toggle();
    });
});
</script>

show

此方法可用于手动打开模态窗口。

示例

jQuery JavaScript
Try this code »
<script>
$(document).ready(function() {
    $("#myBtn").click(function() {
        $("#myModal").modal("show");
    });
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var btn = document.getElementById("myBtn");
    var myModal = new bootstrap.Modal(document.getElementById("myModal"));

    btn.addEventListener("click", function() {        
        myModal.show();
    });
});
</script>

hide

此方法可用于手动隐藏模态窗口。

示例

jQuery JavaScript
Try this code »
<script>
$(document).ready(function() {
    $("#myBtn").click(function() {
        $("#myModal").modal("hide");
    });
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var myModal = new bootstrap.Modal(document.getElementById("myModal"));
    var btn = document.getElementById("myBtn");

    btn.addEventListener("click", function() {        
        myModal.hide();
    });
});
</script>

handleUpdate

此方法会重新调整模态框的位置,以应对由于出现视口滚动条而发生的抖动,以防模态态高度发生变化,使其在打开时高于视口高度。

p>

此场景的一个常见示例是通过 JavaScript 显示模式内的隐藏元素,或在激活后使用 Ajax 加载模式内的内容。

示例

jQuery JavaScript
Try this code »
<script>
$(document).ready(function() {
    $("#showText").click(function() {
        $("#textBlock").show();
        $("#myModal").modal("handleUpdate");
    });
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var btn = document.getElementById("showText");

    btn.addEventListener("click", function() {
        document.getElementById("textBlock").style.display = "block";
        var myModal = bootstrap.Modal.getInstance(document.getElementById("myModal"));
        myModal.handleUpdate();
    });
});
</script>

dispose

此方法会破坏元素的模式(即删除 DOM 元素上存储的数据)。

示例

jQuery JavaScript
Try this code »
<script>
$(document).ready(function() {
    $("#myBtn").click(function() {
        var myModal = bootstrap.Modal.getInstance($("#myModal")[0]);
        console.log(myModal);
        // {_element: div#myModal.modal.fade, _config: {…}, _dialog: div.modal-dialog, _backdrop: ke, _isShown: false, …}
        
        $("#myModal").modal("dispose");
        console.log(myModal);
        // {_element: null, _config: null, _dialog: null, _backdrop: null, _isShown: null, …}
    });
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var btn = document.getElementById("myBtn");

    btn.addEventListener("click", function() {
        var myModal = bootstrap.Modal.getInstance(document.getElementById("myModal"));
        console.log(myModal);
        // {_element: div#myModal.modal.fade, _config: {…}, _dialog: div.modal-dialog, _backdrop: ke, _isShown: false, …}
        
        myModal.dispose();
        console.log(myModal);
        // {_element: null, _config: null, _dialog: null, _backdrop: null, _isShown: null, …}
    });
});
</script>

getInstance

这是一个静态方法,允许您获取与 DOM 元素关联的模态实例。

示例

jQuery JavaScript
Try this code »
<script>
$(document).ready(function() {
    $("#myBtn").click(function() {
        var modal = bootstrap.Modal.getInstance($("#myModal")[0]);
        console.log(modal);
        // {_element: div#myModal.modal.fade, _config: {…}, _dialog: div.modal-dialog, _backdrop: ke, _isShown: false, …}
    });
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var btn = document.getElementById("myBtn");

    btn.addEventListener("click", function() {
        var myModal = document.getElementById("myModal");
        var modal = bootstrap.Modal.getInstance(myModal);
        console.log(modal);
        // {_element: div#myModal.modal.fade, _config: {…}, _dialog: div.modal-dialog, _backdrop: ke, _isShown: false, …}
    });
});
</script>

getOrCreateInstance

这是一种静态方法,允许您获取与 DOM 元素关联的模态实例,或者在模态未初始化的情况下创建一个新实例。

示例

jQuery JavaScript
Try this code »
<script>
$(document).ready(function() {
    $("#myBtn").click(function() {
        var modal = bootstrap.Modal.getOrCreateInstance($("#myModal")[0]);
        console.log(modal);
        // {_element: div#myModal.modal.fade, _config: {…}, _dialog: div.modal-dialog, _backdrop: ke, _isShown: false, …}
    });
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var btn = document.getElementById("myBtn");

    btn.addEventListener("click", function() {
        var myModal = document.getElementById("myModal");
        var modal = bootstrap.Modal.getOrCreateInstance(myModal);
        console.log(modal);
        // {_element: div#myModal.modal.fade, _config: {…}, _dialog: div.modal-dialog, _backdrop: ke, _isShown: false, …}
    });
});
</script>

提示: 不能在类的实例(即对象)上调用静态方法。 他们被称为类本身。 关键字 static 用于定义类的静态方法。


Bootstrap 的模态类包含一些用于连接模态功能的事件。

事件 说明
show.bs.modal 此事件在调用 show 实例方法时立即触发。
shown.bs.modal 当模式对用户可见时触发此事件。 它会等到 CSS 转换过程完全完成后才会被触发。
hide.bs.modal 调用 hide 实例方法时立即触发此事件。
hidden.bs.modal 当模态完成对用户隐藏时会触发此事件。 它会等到 CSS 转换过程完全完成后才会被触发。
hidePrevented.bs.modal 当显示模态时触发此事件,其 backdrop 选项设置为 static 并执行模态外的单击,或 keyboard 选项设置为 false 和转义键 按下。

当模态窗口的淡出转换完全完成时,以下示例向用户显示一条警告消息。

示例

jQuery JavaScript
Try this code »
<script>
$(document).ready(function() {
    $("#myModal").on("hidden.bs.modal", function() {
        alert("Modal window has been completely closed.");
    });
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var myModal = document.getElementById("myModal");

    myModal.addEventListener("hidden.bs.modal", function() {
        alert("Modal window has been completely closed.");
    });
});
</script>

如果您尝试通过单击黑暗区域来关闭模式,以下示例会显示一条警告消息。

示例

jQuery JavaScript
Try this code »
<script>
$(document).ready(function(){
    $("#myModal").on("hidePrevented.bs.modal", function(){
        alert("Modal can't be closed by clicking outside, because the backdrop option is set to static.");
    });
});
</script>
<script>
document.addEventListener("DOMContentLoaded", function() {
    var myModal = document.getElementById("myModal");

    myModal.addEventListener("hidePrevented.bs.modal", function() {
        alert("Modal can't be closed by clicking outside, because the backdrop option is set to static.");
    });
});
</script>

提示:另请参阅 Bootstrap FAQ 部分以获取更多关于模式的示例,例如设置垂直对齐、更改默认宽度、嵌入 YouTube 视频等。

Advertisements