bootstrap中的模態框(modal,彈出層)
bootstrap
中的模態框(modal
),不同於Tooltips
,模態框以彈出對話方塊的形式出現,具有最小和最實用的功能集。
務必將模態框的 HTML 程式碼放在文件的最高層級內(也就是說,儘量作為 body
標籤的直接子元素),以避免其他元件影響模態框的展現或功能。
預設的modal
示例:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap Modal</title>
<link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<button type="button" class="btn btn-primary btn-lg" data-toggle="modal" data-target="#myModal">
Launch demo modal
</button>
<div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
<h4 class="modal-title" id="myModalLabel">Modal title</h4>
</div>
<div class="modal-body">
<p>One fine body…</p>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Save</button>
</div>
</div>
</div>
</div>
<script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<script src="http://cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
</body>
</html>
為 .modal
新增 role="dialog"
,用於指定模態框為對話方塊。
為 .modal-dialog
新增 aria-hidden="true"
屬性。
通過 aria-describedby
屬性為模態框 .modal
新增描述性資訊。
關閉動畫
如果你不需要模態框彈出時的動畫效果(淡入淡出效果),刪掉 .fade
類即可。
通過按鈕屬性顯示不同內容
當有一堆按鈕,都要觸發相同的模態框(如:向好友列表中某個人發訊息),只是有使用者ID不同,那麼可以使用data-whatever
配合event.relatedtarget
來實現:
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Bootstrap Modal</title>
<link rel="stylesheet" href="http://cdn.bootcss.com/bootstrap/3.3.5/css/bootstrap.min.css">
</head>
<body>
<div class="panel panel-default">
<div class="panel-heading">好友列表</div>
<div class="panel-body">
<div class="list-group" role="group" aria-label="好友列表">
<button type="button" class="list-group-item" data-toggle="modal" data-target="#exampleModal"
data-whatever="張三">張三
</button>
<button type="button" class="list-group-item" data-toggle="modal" data-target="#exampleModal"
data-whatever="李四">李四
</button>
<button type="button" class="list-group-item" data-toggle="modal" data-target="#exampleModal"
data-whatever="王二">王二
</button>
</div>
</div>
</div>
<div class="modal fade" id="exampleModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span
aria-hidden="true">×</span></button>
<h4 class="modal-title" id="exampleModalLabel">New message</h4>
</div>
<div class="modal-body">
<form>
<div class="form-group">
<label for="recipient-name" class="control-label">Recipient:</label>
<input type="text" class="form-control" id="recipient-name">
</div>
<div class="form-group">
<label for="message-text" class="control-label">Message:</label>
<textarea class="form-control" id="message-text"></textarea>
</div>
</form>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
<button type="button" class="btn btn-primary">Send message</button>
</div>
</div>
</div>
</div>
<script src="http://cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<script src="http://cdn.bootcss.com/bootstrap/3.3.5/js/bootstrap.min.js"></script>
<script>
$('#exampleModal').on('show.bs.modal', function (event) {
var button = $(event.relatedTarget) // 觸發事件的按鈕
var recipient = button.data('whatever') // 解析出data-whatever內容
var modal = $(this)
modal.find('.modal-title').text('Message To ' + recipient)
modal.find('.modal-body input').val(recipient)
})
</script>
</body>
</html>
通常不需寫 JavaScript
程式碼也可啟用模態框。通過在一個起控制器作用的元素(例如:按鈕)上新增 data-toggle="modal"
屬性,或者 data-target="#foo"
屬性,再或者 href="#foo"
屬性,用於指向被控制的模態框。
通過JavaScript呼叫modal
通常只需一行 JavaScript 程式碼,即可通過元素的 id myModal
呼叫模態框:
$('#myModal').modal(options)
JavaScript引數:
可以將選項通過 data
屬性或 JavaScript 程式碼傳遞。對於 data
屬性,需要將引數名稱放到 data-
之後,例如 data-backdrop=""
。
名稱 | 型別 | 預設值 | 描述 |
---|---|---|---|
backdrop | boolean或’static’ | True | 預設情況下,點選其它位置,模態框自動關閉,你可以設定此屬性為false或者"static"防止模態框自動關閉 |
keyboard | boolean | True | 鍵盤上的 esc 鍵被按下時關閉模態框。 |
show | path | True | 模態框初始化之後就立即顯示出來。 |
remote | path | False | 這個引數在v4裡會去掉(可以自己寫ajax請求來實現)如果提供的是 URL,將利用 jQuery 的 load 方法從此 URL 地址載入要展示的內容(只載入一次)並插入 .modal-content 內。如果使用的是 data 屬性 API,還可以利用 href 屬性指定內容來源地址。下面是一個例項:<a data-toggle="modal" href="remote.html" data-target="#modal">Click me</a> |
呼叫示例
1.將頁面中的某塊內容作為模態框啟用。接受可選引數 object
。
$('#myModal').modal({
keyboard: false
})
2.手動開啟或關閉模態框。在模態框顯示或隱藏之前返回到主調函式中(也就是,在觸發 shown.bs.modal
或 hidden.bs.modal
事件之前)。
$('#myModal').modal('toggle')
3.手動開啟模態框。在模態框顯示之前返回到主調函式中 (也就是,在觸發 shown.bs.modal
事件之前)。
$('#myModal').modal('show')
4.手動隱藏模態框。在模態框隱藏之前返回到主調函式中 (也就是,在觸發 hidden.bs.modal
事件之前)。
$('#myModal').modal('hide')
5.更新模態框,在模態框動態新增或刪除內容時:
$('#myModal').modal('handleUpdate')
繫結事件
Bootstrap 的模態框類提供了一些事件用於監聽並執行你自己的程式碼。
事件型別 | 描述 |
---|---|
show.bs.modal | show 方法呼叫之後立即觸發該事件。如果是通過點選某個作為觸發器的元素,則此元素可以通過事件的 relatedTarget 屬性進行訪問。 |
shown.bs.modal | 此事件在模態框已經顯示出來(並且同時在 CSS 過渡效果完成)之後被觸發。如果是通過點選某個作為觸發器的元素,則此元素可以通過事件的 relatedTarget 屬性進行訪問。 |
hide.bs.modal | hide 方法呼叫之後立即觸發該事件。 |
hidden.bs.modal | 此事件在模態框被隱藏(並且同時在 CSS 過渡效果完成)之後被觸發。 |
loaded.bs.modal | 從遠端的資料來源載入完資料之後觸發該事件。 |
如:
$('#myModal').on('hidden.bs.modal', function (e) {
// do something...
})
相關文章
- Bootstrap modal模態框彈出瞬間又消失boot
- Bootstrap模態框(Modal)boot
- 設定bootstrap modal模態框的寬度和寬度boot
- BootStrap中模態框踩坑boot
- BootStrap的動態模態框及靜態模態框boot
- 基於Vue.js PC桌面端彈出框元件|vue自定義彈層元件|vue模態框Vue.js元件
- 純 CSS 打造一個模態(modal)框CSS
- 去除 bootstrap 彈出框背景變暗的效果boot
- Bootstrap 模態框無法呼叫的問題boot
- 詳細介紹React模態框元件react-modalReact元件
- Bootstrap的datetimepicker預設自動開啟彈框(js中開啟彈窗)bootJS
- bootstrap外掛學習-bootstrap.modal.jsbootJS
- react封裝一個可自定義內容的modal彈框元件React封裝元件
- laravel-admin 模態框裡面的彈出表單 select 聯動不能使用Laravel
- 彈框 在Avalonia中,使用系統預設的彈框
- Bootstrap外掛modal原始碼的學習boot原始碼
- Vue+iview Modal元件關閉彈框之後報錯問題VueView元件
- vux和iview的彈出框總結UXView
- Android Dialog風格彈出框的ActivityAndroid
- sweetalert 彈出框瞬間消失
- Laravel-admin grid 自定義按鈕並彈出模態框再次進行確認(基礎使用)Laravel
- 彈出層layer 完整步驟以及在編寫彈出層時遇到的錯誤
- 純手畫WinForm的Alert提示彈出框ORM
- 點選彈出居中登陸框
- Ant Design 中 對話方塊Modal 作為詳情彈框展示 右下角只需一個按鈕
- 彈框
- Bootstrap4動態模態視窗jquery外掛bootjQuery
- JavaScript 動畫方式彈出圓角框JavaScript動畫
- Element-Ui元件(四十)Popover 彈出框UI元件
- 解決select2 在modal中搜尋框無效的問題
- antdv彈窗modal可拖動方法
- 2019最佳彈窗/彈出框設計20例【附教程】
- iView之Modal(一級彈窗和二級彈窗)View
- 模態框到阻止冒泡時間
- 模態框:固定位置學習
- 封裝一個的toast彈出框(vue專案)封裝ASTVue
- html + css + js 原生 彈出提示框的實現HTMLCSSJS
- jQuery文字框輸入數字彈出格式化層jQuery