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