Bootstrap 模態框


Bootstrap 模態框(Modal)外掛程式

模態框(Modal)是覆蓋在父窗體上的子窗體。通常,目的是顯示來自單獨的來源的內容,可以在不離開父窗體的情況下有一些互動。子窗體可提供資訊、互動等。

如果您想要單獨引用該外掛程式的功能,那麼您需要引用 modal.js。或者,如 Bootstrap 外掛程式概覽 一章所提到,您可以引用 bootstrap.js 或壓縮版的 bootstrap.min.js

用法

您可以切換模態框(Modal)外掛程式的隱藏內容:

  • 透過data 屬性:在控制器元素(例如按鈕或連結)上設定屬性data-toggle="modal",同時設定data-target="#identifier"href="# identifier" 來指定要切換的特定的模態框(帶有id="identifier")。

  • 透過JavaScript:使用此技術,您可以透過簡單的一行JavaScript 來呼叫帶有id="identifier" 的模態方塊:

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

實例

一個靜態的模態視窗實例,如下面的實例所示:

實例

<!DOCTYPE html>
<html>
<head>
   <title>Bootstrap 实例 - 模态框(Modal)插件</title>
     <link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css">  
     <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
     <script src="http://apps.bdimg.com/libs/bootstrap/3.3.0/js/bootstrap.min.js"></script>
</head>
<body>

<h2>创建模态框(Modal)</h2>
<!-- 按钮触发模态框 -->
<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" aria-hidden="true">
                  ×
            </button>
            <h4 class="modal-title" id="myModalLabel">
               模态框(Modal)标题
            </h4>
         </div>
         <div class="modal-body">
            在这里添加一些文本
         </div>
         <div class="modal-footer">
            <button type="button" class="btn btn-default" 
               data-dismiss="modal">关闭
            </button>
            <button type="button" class="btn btn-primary">
               提交更改
            </button>
         </div>
      </div><!-- /.modal-content -->
</div><!-- /.modal -->
</div>
</body>
</html>

運行實例»

點擊"運行實例"按鈕查看線上實例

#結果如下所示:

模态框(Modal)插件

程式碼講解:

  • 使用模態窗口,您需要有某種觸發器。您可以使用按鈕或連結。這裡我們使用的是按鈕。

  • 如果您仔細查看上面的程式碼,您會發現在<button> 標籤中,data-target="#myModal" 是您想要在頁面上載入的模態框的目標。您可以在頁面上建立多個模態框,然後為每個模態框建立不同的觸發器。現在,很明顯,您不能在同一時間加載多個模組,但您可以在頁面上創建多個在不同時間進行加載。

  • 在模態方塊中需要注意兩點:

    1. #第一是.modal,用來把<div> 的內容辨識為模態框。

    2. 第二是 .fade class。當模態框被切換時,它會造成內容淡入淡出。

  • aria-labelledby="myModalLabel",該屬性引用模態方塊的標題。

  • 屬性aria-hidden="true" 用於保持模態視窗不可見,直到觸發器被觸發為止(例如點擊在相關的按鈕上) 。

  • <div class="modal-header">,modal-header 是為模態視窗的頭部定義樣式的類別。

  • class="close",close 是一個 CSS class,用來為模態視窗的關閉按鈕設定樣式。

  • data-dismiss="modal",是一個自訂的 HTML5 data 屬性。在這裡它被用來關閉模態視窗。

  • class="modal-body",是 Bootstrap CSS 的一個 CSS class,用來設定模態視窗的主體。

  • class="modal-footer",是 Bootstrap CSS 的一個 CSS class,用來設定模態視窗的底部樣式。

  • data-toggle="modal",HTML5 自訂的 data 屬性 data-toggle 用來開啟模態視窗。

選項

有一些選項可以用來自訂模態視窗(Modal Window)的外觀和感觀,它們是透過 data 屬性或 JavaScript 來傳遞的。下表列出了這些選項:

選項名稱類型/預設值#Data 屬性名稱描述
backdropboolean 或string 'static'
預設值:true
data-backdrop#指定一個靜態的背景,當使用者點選模態框外部時不會關閉模態框。
keyboardboolean
預設值:true
data-keyboard當按下escape 鍵時關閉模態框,設定為false 時則按鍵無效。
showboolean
預設值:true
data-show#當初始化時顯示模態框。
remotepath
預設值:false
data-remote使用jQuery .load 方法,為模態框的主體注入內容。如果新增了一個帶有有效 URL 的 href,則會載入其中的內容。如下面的實例所示:
<a data-toggle="modal" href="remote.html" data-target="#modal">请点击我</a>

方法

以下是一些可與 modal() 一起使用的有用的方法。

把內容當作模態框啟動。接受一個可選的選項物件。
$('#identifier').modal({
keyboard: false
})
手動切換模態方塊。
$('#identifier').modal('toggle')
手動開啟模態方塊。
$('#identifier').modal('show')
手動隱藏模態方塊。
$('#identifier').modal('hide')
方法描述實例
##Options: .modal(options)
Toggle: .modal('toggle')
Show: .modal('show')
Hide: .modal('hide')
#實例

下面的實例示範了方法的用法:

實例

<!DOCTYPE html>
<html>
<head>
   <title>Bootstrap 实例 - 模态框(Modal)插件方法</title>
   <link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css">  
     <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
     <script src="http://apps.bdimg.com/libs/bootstrap/3.3.0/js/bootstrap.min.js"></script>
</head>
<body>

<h2>模态框(Modal)插件方法</h2>

<!-- 按钮触发模态框 -->
<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" 
               aria-hidden="true">×
            </button>
            <h4 class="modal-title" id="myModalLabel">
               模态框(Modal)标题
            </h4>
         </div>
         <div class="modal-body">
            按下 ESC 按钮退出。
         </div>
         <div class="modal-footer">
            <button type="button" class="btn btn-default" 
               data-dismiss="modal">关闭
            </button>
            <button type="button" class="btn btn-primary">
               提交更改
            </button>
         </div>
      </div><!-- /.modal-content -->
   </div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<script>
   $(function () { $('#myModal').modal({
      keyboard: true
   })});
</script>

</body>
</html>

運行實例»點擊"運行實例" 按鈕查看線上實例

結果如下所示:

模态框(Modal)插件方法
只需點選ESC 鍵,模態視窗即會退出。

事件

下表列出了模態方塊中要用到事件。這些事件可在函數中當鉤子使用。

事件描述實例show.bs.modal在呼叫show 方法後觸發。
$('#identifier').on('show.bs.modal', function () {
  // 执行一些动作...
})
shown.bs.modal當模態方塊對使用者可見時觸發(會等待 CSS 過渡效果完成)。
$('#identifier').on('shown.bs.modal', function () {
  // 执行一些动作...
})
hide.bs.modal當呼叫 hide 實例方法時觸發。
$('#identifier').on('hide.bs.modal', function () {
  // 执行一些动作...
})
hidden.bs.modal當模態框完全對使用者隱藏時觸發。
$('#identifier').on('hidden.bs.modal', function () {
  // 执行一些动作...
})

實例

下面的實例示範了事件的用法:

實例

<!DOCTYPE html>
<html>
<head>
   <title>Bootstrap 实例 - 模态框(Modal)插件事件</title>
   <link rel="stylesheet" href="http://apps.bdimg.com/libs/bootstrap/3.3.0/css/bootstrap.min.css">  
     <script src="http://apps.bdimg.com/libs/jquery/2.1.1/jquery.min.js"></script>
     <script src="http://apps.bdimg.com/libs/bootstrap/3.3.0/js/bootstrap.min.js"></script>
</head>
<body>

<h2>模态框(Modal)插件事件</h2>

<!-- 按钮触发模态框 -->
<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" 
               aria-hidden="true">×
            </button>
            <h4 class="modal-title" id="myModalLabel">
               模态框(Modal)标题
            </h4>
         </div>
         <div class="modal-body">
            点击关闭按钮检查事件功能。
         </div>
         <div class="modal-footer">
            <button type="button" class="btn btn-default" 
               data-dismiss="modal">
               关闭
            </button>
            <button type="button" class="btn btn-primary">
               提交更改
            </button>
         </div>
      </div><!-- /.modal-content -->
   </div><!-- /.modal-dialog -->
</div><!-- /.modal -->
<script>
   $(function () { $('#myModal').modal('hide')})});
</script>
<script>
   $(function () { $('#myModal').on('hide.bs.modal', function () {
      alert('嘿,我听说您喜欢模态框...');})
   });
</script>

</body>
</html>

##執行實例»點擊"運行實例" 按鈕查看線上實例

##結果如下所示:

模态框(Modal)插件事件#如上實例所示,如果您點擊了
關閉

按鈕,也就是hide 事件,則會顯示警告訊息。