bootstrap modal 垂直居中對齊
文章參考
http://www.bubuko.com/infodetail-666582.html
http://v3.bootcss.com/javascript/#modals
Html程式碼- <div class="modal fade" id="sqh_model">
- <div class="modal-dialog">
- <div class="modal-content">
- <div class="modal-header">
-
<
- <h4 class="modal-title">蔬菜預約</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" data-dismiss="modal">確定</button
- </div>
- </div><!-- /.modal-content -->
- </div><!-- /.modal-dialog -->
- </div><!-- /.modal -->
- function showTips(){
- $('#sqh_model').modal('show')
- }
預設是距離頂部30px,左右居中
如圖所示
解決辦法一:覆蓋之前的CSS樣式
Html程式碼- /**********對bootstrap的modal樣式進行重寫**********/
- .modal-dialog {
- margin: 200px auto;
- }
解決辦法二:呼叫回撥函式
Js程式碼- function showTips(){
- //{"backdrop":"static"}點選背景不會消失
- $('#sqh_model').modal({"backdrop":"static"}).modal('show').on("shown.bs.modal",function(){
- // 是彈出框居中。。。
- var $modal_dialog = $(this.$element[0]).find('.modal-dialog');
- //獲取可視視窗的高度
- var clientHeight = (document.body.clientHeight < document.documentElement.clientHeight) ? document.body.clientHeight: document.documentElement.clientHeight;
- //得到dialog的高度
- var dialogHeight = $modal_dialog.height();
- //計算出距離頂部的高度
- var m_top = (clientHeight - dialogHeight)/2;
- console.log("clientHeight : " + clientHeight);
- console.log("dialogHeight : " + dialogHeight);
- console.log("m_top : " + m_top);
- $modal_dialog.css({'margin': m_top + 'px auto'});
- });
- }
解決辦法三:修改原始碼
Js程式碼- Modal.prototype.adjustDialog = function () {
- var modalIsOverflowing = this.$element[0].scrollHeight > document.documentElement.clientHeight
- this.$element.css({
- paddingLeft: !this.bodyIsOverflowing && modalIsOverflowing ? this.scrollbarWidth : '',
- paddingRight: this.bodyIsOverflowing && !modalIsOverflowing ? this.scrollbarWidth : ''
- });
- // 是彈出框居中。。。
- var $modal_dialog = $(this.$element[0]).find('.modal-dialog');
- //獲取可視視窗的高度
- var clientHeight = (document.body.clientHeight < document.documentElement.clientHeight) ? document.body.clientHeight: document.documentElement.clientHeight;
- //得到dialog的高度
- var dialogHeight = $modal_dialog.height();
- //計算出距離頂部的高度
- var m_top = (clientHeight - dialogHeight)/2;
- console.log("clientHeight : " + clientHeight);
- console.log("dialogHeight : " + dialogHeight);
- console.log("m_top : " + m_top);
- $modal_dialog.css({'margin': m_top + 'px auto'});
- }
引數
可以將選項通過 data 屬性或 JavaScript 程式碼傳遞。對於 data 屬性,需要將引數名稱放到 data-
之後,例如 data-backdrop=""
。
backdrop |
boolean 或 字串'static' |
true |
Includes a modal-backdrop element. Alternatively,
specify the modal on click. |
keyboard | boolean | true | 鍵盤上的 esc 鍵被按下時關閉模態框。 |
show | boolean | true | 模態框初始化之後就立即顯示出來。 |
remote | path | false |
This option is deprecated since v3.3.0 and will be removed in v4. We recommend instead using client-side templating or a data binding framework, or calling jQuery.loadyourself.
如果提供的是 URL,將利用 jQuery 的 URL 地址載入要展示的內容(只加載一次)並
插入
還可以利用
|
方法
.modal(options)
將頁面中的某塊內容作為模態框啟用。接受可選引數 object
。
$('#myModal').modal({
keyboard: false
})
.modal('toggle')
手動開啟或關閉模態框。在模態框顯示或隱藏之前返回到主調函式中(也就是,在觸發 shown.bs.modal
或hidden.bs.modal
事件之前)。
$('#myModal').modal('toggle')
.modal('show')
手動開啟模態框。在模態框顯示之前返回到主調函式中 (也就是,在觸發 shown.bs.modal
事件之前)。
$('#myModal').modal('show')
.modal('hide')
手動隱藏模態框。在模態框隱藏之前返回到主調函式中 (也就是,在觸發 hidden.bs.modal
事件之前)。
$('#myModal').modal('hide')
.modal('handleUpdate')
Readjusts the modal's positioning to counter a scrollbar in case one should appear, which would make the modal jump to the left.
Only needed when the height of the modal changes while it is open.
複製$('#myModal').modal('handleUpdate')
事件
Bootstrap 的模態框類提供了一些事件用於監聽並執行你自己的程式碼。
All modal events are fired at the modal itself (i.e. at the <div class="modal">
).
show.bs.modal |
的元素,則此元素可以通過事件的 |
shown.bs.modal |
此事件在模態框已經顯示出來(並且同時在 CSS 過渡效果完成)之後被觸發。 如果是通過點選某個作為觸發器的元素,則此元素可以通
過事件的 |
hide.bs.modal |
hide 方法呼叫之後立即觸發該事件。 |
hidden.bs.modal | 此事件在模態框被隱藏(並且同時在 CSS 過渡效果完成)之後被觸發。 |
loaded.bs.modal |
從遠端的資料來源 載入完資料之後觸發該事件。 |
$('#myModal').on('hidden.bs.modal', function (e) {
// do something...
})