使用bootstrap的JS插件實現模態框效果

来源:http://www.cnblogs.com/afei-qwerty/archive/2017/05/10/6836387.html
-Advertisement-
Play Games

在上一篇文章中,我們使用 js+css 實現了模態框效果,在理解了模態框的基本實現方法和實現效果後,我們就要尋找更快捷的方法,又快又好的來完成模態框開發需求,從而節約時間,提高效率。一個好的輪子,不僅能大幅減輕工作量,而且能讓我們的代碼更簡明和優雅。 今天我們選擇使用著名的 bootstrap 庫的 ...


在上一篇文章中,我們使用 js+css 實現了模態框效果,在理解了模態框的基本實現方法和實現效果後,我們就要尋找更快捷的方法,又快又好的來完成模態框開發需求,從而節約時間,提高效率。一個好的輪子,不僅能大幅減輕工作量,而且能讓我們的代碼更簡明和優雅。

今天我們選擇使用著名的 bootstrap 庫的模態框插件 modal.js 來實現模態框效果,同時也使大家進一步熟悉 bootstrap 的插件使用。

一. bootstrap 的 js 插件的簡單介紹

1.引入

a. 引入全部JS插件

我們在使用 bootstrap 庫時,引入的文件 bootstrap.js 或者 bootstrap.min.js 就是 bootstrap的插件文件,這兩種文件都集成了 bootstrap 的所有插件,區別在於 *.min.js 是壓縮後的版本。

我們在使用 bootstrap 的 js插件時不需要做更多的工作,只需要引入這兩個文件中的一個就可以了,另外重要的信息是 bootstrap 的所有插件都依賴於 jquery 庫,所以在引入 bootstrap 的插件時,必須先引入 jquery 庫。

b.引入單個JS插件

如果只使用 bootstrap庫的 某個插件,所以不想引入全部插件時,可以選擇單獨引入某個插件。此種方法需要你有要使用的插件的單獨文件,bootstrap 共有 12 個 js 插件,你可以到 github此處 下載使用每個插件的單獨文件。

另外 bootstrap 有以下 12 個插件,大家可以大概做個瞭解:

  • 動畫過渡(Transitions): transition.js
  • 模態彈窗(Modal): modal.js
  • 下拉菜單(Dropdown): dropdown.js
  • 滾動偵測(Scrollspy): scrollspy.js
  • 選項卡(Tab): tab.js
  • 提示框(Tooltips): tooltop.js
  • 彈出框(Popover): popover.js
  • 警告框(Alert): alert.js
  • 按鈕(Buttons): button.js
  • 摺疊/手風琴(Collapse): collapse.js
  • 圖片輪播Carousel: carousel.js
  • 自動定位浮標Affix: affix.js

2.引入插件的使用

a.通過 data 屬性 API

bootstrap 提供了一個非常方便的 API 來調用插件,那就是 data 屬性 。我們不需要寫很多 js 代碼,只需要為 HTML 標簽增加 data-* 屬性,就可以調用 js 插件實現各種效果 。

例如我們想為按鈕綁定 下拉菜單效果,只需要為按鈕添加 data-toggle="dropdown" 屬性,在點擊按鈕時,就會調用 dropdown 插件了。

b.通過 純JS API

當然我們也可以使用 bootstrap 提供的 純javascript API 來調用插件,例如為 id 為 test 的 按鈕綁定調用 dropdown 插件操作,可以使用如下的 js 代碼:

$("#test").dropdown(option) /可帶選項參數option

 

二.模態框插件詳解

1.模態框的代碼結構

bootstrap 模態框插件是 modal.js 。使用的代碼結構樣式組件如下:

  • .modal               模態框
  • .modal-dialog    模態框主體
  • .modal-content 模態框內容
  • .modal-header  模態框內容頭部(標題)
  • .modal-title        模態框標題
  • .modal-body     模態框內容主要內容部分
  • .modal-footer    模態框內容底部 (可放置操作按鈕等)

一個模態框的結構類似如下

 

<h1>模態框是個值得學習的好效果</h1>
<button class="btn btn-success" data-toggle="modal" data-target="#modalone" data-show="false">come on!</button>
<div class="modal fade" id="modalone">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">
          <span aria-hidden="true">&times;</span>
        </button>
        <h4 class="modal-title">模態彈出窗標題</h4>
      </div>
      <div class="modal-body">
        <p>模態框主體</p>
      </div>
      <div class="modal-footer">
        <p style="display: inline-block;">模態框底部</p>
        <button class="btn btn-info">done</button>
      </div>
    </div>
  </div>
</div>
</div>

 

2.模態框插件的 data 屬性 API

a.必須的 data 屬性

以上代碼第一個按鈕的 data-toggle="modal" 表示 此按鈕為模態框的觸發器,點擊時彈出模態框。另外也可以使用 鏈接標簽 <a> 的 href 屬性代替 data-toggle 將鏈接<a> 作為觸發器,但不推薦。

data-target="#modalone" 屬性表示 觸發的模態視窗 ID 為 modalone 。一個頁面可以有多個模態視窗觸發器,但是一個觸發器只能觸發對應的模態框,不能觸發多個模態框。

以上兩個 data 屬性是實現模態框效果必須的。

ps.

.fade 格式化類可以為模態框彈出添加過渡效果。

close 格式化類 和 data-dismiss 屬性配合可以為模態框添加關閉按鈕。

b.可選的 data 屬性

另外還有一些其他可選的 data 屬性,可以增強模態框的表現效果。如下:

  • data-backdrop    是否包含一個背景 DIV 從而在單擊背景時關閉模態框,屬性值為 true 時 包含, 為 static 時不包含。
  • data-keyboard    為 true 時按下鍵盤 ESC 時模態框關閉,false時不關閉
  • data-show           為true時頁面載入後不顯示,為false時顯示

3. 使用 JS 代碼 API

通過 JS 代碼調用插件帶 選項參數 也可以達到與設置以上屬性相同的效果,代碼如下:

 

$(function () {
    $(".btn").click(function () {
        $("#modalone").modal({
            backdrop: false, // 相當於data-backdrop
            keyboard: false, // 相當於data-keyboard
            show: true, // 相當於data-show
            remote: "" // 相當於a標簽作為觸發器的href
        });
    });
});

 

4.最終效果

最後,以上模態框代碼效果如下:

未點擊按鈕時:

 

點擊後:

一個簡單的模態框效果就製作完成了。

三.補充

1.純JS API 的方法

JS 代碼調用插件, .modal() 方法的參數除了可以攜帶以上提及的 option 參數外,還可以有以下幾個:

  • .modal('toggle') 手動切換模態框
  • .modal('show') 手動打開模態框
  • .modal('hide') 手動關閉模態框

2.純JS API 的事件

同時,模態框插件還提供了以下幾個鉤子事件函數,可以在JS代碼中使用來達到豐富模態框效果或添加更多功能的目的。

 

show.bs.modal 在show方法調用時立即觸發(尚未顯示之前);如果單擊了一個元素,那麼該元素將作為事件relatedTarget事件
shown.bs.modal 該事件在模態窗完全顯示給用戶之後(並且等CSS動畫完成之後)觸發;如果單擊了一個元素,那麼該元素將作為事件relatedTarget事件
hide.bs.modal 在hide方法調用時(但還未關閉隱藏)立即觸發
hidden.bs.modal 該事件在模態彈出窗完全隱藏之後(並CSS動畫漂亮完成之後)觸發

以上就是 bootstrap 的模態框插件的基本知識,希望大家喜歡。

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • FreeCodeCamp( FCC)前端工程師 基礎演算法練習 全解詳解 - 菜鳥的解答 ...
  • JSON.parse與eval和能將一個字元串解析成一個JSON對象,但還是有挺大區別。 測試代碼 JSON.parse執行: 例:JSON.parse(A); A、B、C、G都不可轉,D、E、F都可以。 eval執行: 例:eval("("+A+")"); A到G都可以轉,特別到G時,頁面還跳轉到 ...
  • js獲取地理位置的介面navigator.geolocation geolocation對象有三個方法 1.getCurrentPosition 2.watchPosition 3.clearWatch 一.getCurrentPosition方法用於獲取用戶的地理位置 格式:getCurrentP ...
  • 比如:一個用戶列表要按照用戶的積分高低去排序渲染(一般後臺會排序之後返回給你); 例如下麵的data是請求回來的數據, ...
  • 1、說明,一般用戶頭像在上傳的時候都會處理為正方形,如果沒有處理該怎麼正確顯示用戶頭像呢?解決方案:用css強制 線上地址移動端:戳這裡 css ...
  • 用fiddler調試http請求,在ie瀏覽器下,如果請求命中緩存,fiddler不會包含該請求。但是在chrome下會包含緩存的請求,Result顯示為304。 ie瀏覽器還會緩存通過ajax請求的數據,導致後續ajax的請求數據不能更新。實際上是只緩存get方式的請求,post方法因為每次的數據 ...
  • 相信大多數後端開發人員的html,css並不是太好(主要說我)。想要做一些網頁效果,難度會比較大。看了下bootstrap這個前端框架,發現這個框架比較好的解決了網頁效果製作中一般性問題。總的來說,bootstrap可以幫助我們在儘量不寫css的情況下,就能實現一些大眾效果。非常適合後臺開發。以下為 ...
  • 以下代碼解決了在IE8及以下瀏覽器中不支持placeholder屬性。 原理:將placeholder的值作為內容寫入控制項,並添加控制項事件來進行模擬。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...