MDUI 中的對話框是一個用途非常廣的組件,經(jīng)常被用來向用戶詢問信息,通知或警告用戶。
同一時間只會有一個對話框處于顯示狀態(tài)。若當前對話框還未關(guān)閉就打開下一個對話框,那么下一個對話框會被加入隊列,等當前對話框關(guān)閉后再打開。
Material Design 對話框設(shè)計規(guī)范
這是一個標準的對話框。
這個對話框不含標題欄。
對話框底部的按鈕默認水平排列。只需在 <div class="mdui-dialog-actions"></div> 上添加類 .mdui-dialog-actions-stacked 即可將按鈕設(shè)置為豎直排列。
在對話框內(nèi)容超出對話框高度時,.mdui-dialog-content 中的內(nèi)容會產(chǎn)生滾動條。
如果將 .mdui-dialog-title 和 .mdui-dialog-actions 放到 .mdui-dialog-content 內(nèi)部, 標題和底部按鈕就會隨著滾動條滾動;反之標題和按鈕將分別固定在頂部和底部,不隨滾動條滾動。
對話框中只有 <div class="mdui-dialog"></div> 是必須的,該元素內(nèi)的內(nèi)容可以替換為任意 HTML。
下面例子中在對話框中放了一個 Tab 選項卡:
使用該方式無需編寫 JavaScript 代碼。只需在一個起控制作用的元素(例如:按鈕)上添加 mdui-dialog="options" 屬性即可。通過自定義屬性調(diào)用時,需要額外添加一個 target 參數(shù),用于指定被控制的對話框,它的值為被控制的對話框的 CSS 選擇器。
在對話框內(nèi)的元素上可以添加一些屬性來綁定事件,這些屬性在使用 JavaScript 調(diào)用時也可以使用。
屬性 | 說明 |
mdui-dialog-close | 點擊該元素會觸發(fā) close.mdui.dialog 事件,并關(guān)閉對話框。 |
mdui-dialog-cancle | 點擊該元素會觸發(fā) cancel.mdui.dialog 事件。 |
mdui-dialog-confirm | 點擊該元素會觸發(fā) confirm.mdui.dialog 事件。 |
實例化組件:
// selector 為對話框的 CSS 選擇器或 DOM 元素或 HTML 字符串
// options 為配置參數(shù),見下面的參數(shù)列表
var inst = new mdui.Dialog(selector, options);
參數(shù)名 | 類型 | 默認值 | 描述 |
overlay | boolean | true | 打開對話框時是否顯示遮罩。 |
history | boolean | true | 打開對話框時是否添加 url hash,若為 true,則打開對話框后可用過瀏覽器的后退按鈕或 Android 的返回鍵關(guān)閉對話框。 |
modal | boolean | false | 是否模態(tài)化對話框。為 false 時點擊對話框外面的區(qū)域時關(guān)閉對話框,否則不關(guān)閉。 |
closeOnEsc | boolean | true | 按下 Esc 鍵時是否關(guān)閉對話框。 |
closeOnCancel | boolean | true | 按下取消按鈕時是否關(guān)閉對話框。 |
closeOnConfirm | boolean | true | 按下確認按鈕時是否關(guān)閉對話框。 |
destroyOnClosed | boolean | false | 關(guān)閉對話框后是否自動銷毀對話框。 |
方法名 | 描述 |
open() | 打開對話框。 |
close() | 關(guān)閉對話框。 |
toggle() | 切換對話框的打開狀態(tài)。 |
getState() | 獲取對話框狀態(tài)。共包含四種狀態(tài)(opening、opened、closing、closed)。 |
destroy() | 銷毀對話框。 |
handleUpdate() | 重新調(diào)整對話框位置和滾動條高度。在打開對話框后,如果修改了對話框內(nèi)容,需要調(diào)用該方法。 |
事件 | 描述 | 目標 | 參數(shù) |
open.mdui.dialog | 對話框開始打開動畫時,事件將被觸發(fā)。 | <div class="mdui-dialog"></div> | event.detail.inst:實例 |
opened.mdui.dialog | 對話框結(jié)束打開動畫時,事件將被觸發(fā)。 | <div class="mdui-dialog"></div> | event.detail.inst:實例 |
close.mdui.dialog | 對話框開始關(guān)閉動畫時,事件將被觸發(fā)。 | <div class="mdui-dialog"></div> | event.detail.inst:實例 |
closed.mdui.dialog | 對話框結(jié)束關(guān)閉動畫時,事件將被觸發(fā)。 | <div class="mdui-dialog"></div> | event.detail.inst:實例 |
cancel.mdui.dialog | 按下取消按鈕時,事件將被觸發(fā)。 | <div class="mdui-dialog"></div> | event.detail.inst:實例 |
confirm.mdui.dialog | 按下確認按鈕時,事件將被觸發(fā)。 | <div class="mdui-dialog"></div> | event.detail.inst:實例 |
MDUI 針對常用場景封裝了幾個預(yù)定義的對話框函數(shù),這些預(yù)定義的對話框只通過 JavaScript 調(diào)用,無需編寫 HTML 代碼。
這些函數(shù)都返回對話框?qū)嵗?/p>
打開一個對話框,標題、內(nèi)容、按鈕等都可以自定義。該方法比較通用,后面的 mdui.alert()、mdui.confirm()、mdui.prompt() 都是使用該方法進行的封裝。
mdui.dialog(options)
參數(shù):
參數(shù)名 | 類型 | 默認值 | 說明 |
title | string | 對話框的標題。 | |
content | string | 對話框的內(nèi)容。 | |
buttons | array | 按鈕數(shù)組,每個按鈕都是一個帶按鈕參數(shù)的對象(見下面表格)。 | |
stackedButtons | boolean | false | 按鈕是否垂直排列。 |
cssClass | string | 添加到 .mdui-dialog 上的 CSS 類。 | |
history | boolean | true | 是否監(jiān)聽 hashchange 事件,為 true 時可以通過 Android 的返回鍵或瀏覽器后退按鈕關(guān)閉對話框。 |
overlay | boolean | true | 打開對話框后是否顯示遮罩層。 |
modal | boolean | false | 是否模態(tài)化對話框。為 false 時點擊對話框外面的區(qū)域時關(guān)閉對話框,否則不關(guān)閉。 |
closeOnEsc | boolean | true | 按下 Esc 鍵時是否關(guān)閉對話框。 |
destroyOnClosed | boolean | true | 關(guān)閉對話框后是否自動銷毀對話框。 |
onOpen | function | 打開動畫開始時的回調(diào)。參數(shù)是對話框的實例。 | |
onOpened | function | 打開動畫結(jié)束時的回調(diào)。參數(shù)是對話框的實例。 | |
onClose | function | 關(guān)閉動畫開始時的回調(diào)。參數(shù)是對話框的實例。 | |
onClosed | function | 關(guān)閉動畫結(jié)束時的回調(diào)。參數(shù)是對話框的實例。 |
按鈕的參數(shù):
參數(shù)名 | 類型 | 默認值 | 說明 |
text | string | 按鈕文本。 | |
bold | boolean | false | 按鈕文本是否加粗。 |
close | boolean | true | 點擊按鈕后是否關(guān)閉對話框。 |
onClick | function | 點擊按鈕的回調(diào)函數(shù)。 |
打開一個警告框,可以包含標題、內(nèi)容和一個確認按鈕:
mdui.alert(text, onConfirm, options)
mdui.alert(text, title, onConfirm, options)
參數(shù)名 | 類型 | 默認值 | 說明 |
confirmText | string | ok | 確認按鈕的文本。 |
history | boolean | true | 是否監(jiān)聽 hashchange 事件,為 true 時可以通過 Android 的返回鍵或瀏覽器后退按鈕關(guān)閉對話框。 |
modal | boolean | false | 是否模態(tài)化對話框。為 false 時點擊對話框外面的區(qū)域時關(guān)閉對話框,否則不關(guān)閉。 |
closeOnEsc | boolean | true | 按下 Esc 鍵時是否關(guān)閉對話框。 |
打開一個確認框,可以包含標題、內(nèi)容、一個確認按鈕和一個取消按鈕:
mdui.confirm(text, onConfirm, onCancel, options)
mdui.confirm(text, title, onConfirm, onCancel, options)
參數(shù)名 | 類型 | 默認值 | 說明 |
confirmText | string | ok | 確認按鈕的文本。 |
cancelText | string | cancel | 取消按鈕的文本。 |
history | boolean | true | 是否監(jiān)聽 hashchange 事件,為 true 時可以通過 Android 的返回鍵或瀏覽器后退按鈕關(guān)閉對話框。 |
modal | boolean | false | 是否模態(tài)化對話框。為 false 時點擊對話框外面的區(qū)域時關(guān)閉對話框,否則不關(guān)閉。 |
closeOnEsc | boolean | true | 按下 Esc 鍵時是否關(guān)閉對話框。 |
打開一個提示用戶輸入的對話框,可以包含標題、內(nèi)容、文本框、一個確認按鈕和一個取消按鈕:
mdui.prompt(label, onConfirm, onCancel, options)
mdui.prompt(label, title, onConfirm, onCancel, options)
參數(shù)名 | 類型 | 默認值 | 說明 |
confirmText | string | ok | 確認按鈕的文本 |
cancelText | string | cancel | 取消按鈕的文本 |
history | boolean | true | 是否監(jiān)聽 hashchange 事件,為 true 時可以通過 Android 的返回鍵或瀏覽器后退按鈕關(guān)閉對話框。 |
modal | boolean | false | 是否模態(tài)化對話框。為 false 時點擊對話框外面的區(qū)域時關(guān)閉對話框,否則不關(guān)閉。 |
closeOnEsc | boolean | true | 按下 Esc 鍵時是否關(guān)閉對話框。 |
type | string | text | 文本框的類型。
|
maxlength | int | 最大輸入字符數(shù)量 | |
defaultValue | string | 文本框的默認值 |
類名 | 效果 |
.mdui-dialog | 定義一個對話框組件。 |
.mdui-dialog-title | 定義對話框的標題。 |
.mdui-dialog-content | 定義對話框的內(nèi)容。 |
.mdui-dialog-actions | 定義對話框的操作欄。 |
.mdui-dialog-actions-stacked | 使對話框操作欄的按鈕豎直排列。 |
更多建議: