對話框

2018-05-26 05:30 更新

MDUI 中的對話框是一個用途非常廣的組件,經(jīng)常被用來向用戶詢問信息,通知或警告用戶。

同一時間只會有一個對話框處于顯示狀態(tài)。若當前對話框還未關(guān)閉就打開下一個對話框,那么下一個對話框會被加入隊列,等當前對話框關(guān)閉后再打開。

調(diào)用方式

  • 通過自定義屬性調(diào)用
  • 通過 JavaScript 調(diào)用


相關(guān)資料

Material Design 對話框設(shè)計規(guī)范


樣式

標準對話框

這是一個標準的對話框。

www.mdui.org - 對話框 - 標準對話框

在線運行


不含標題欄

這個對話框不含標題欄。

www.mdui.org - 對話框 - 不含標題欄

在線運行


豎排按鈕

對話框底部的按鈕默認水平排列。只需在 <div class="mdui-dialog-actions"></div> 上添加類 .mdui-dialog-actions-stacked 即可將按鈕設(shè)置為豎直排列。

www.mdui.org - 對話框 - 豎排按鈕

在線運行


固定標題和按鈕

在對話框內(nèi)容超出對話框高度時,.mdui-dialog-content 中的內(nèi)容會產(chǎn)生滾動條。

如果將 .mdui-dialog-title 和 .mdui-dialog-actions 放到 .mdui-dialog-content 內(nèi)部, 標題和底部按鈕就會隨著滾動條滾動;反之標題和按鈕將分別固定在頂部和底部,不隨滾動條滾動。

www.mdui.org - 對話框 - 固定標題和按鈕

在線運行


自定義內(nèi)容

對話框中只有 <div class="mdui-dialog"></div> 是必須的,該元素內(nèi)的內(nèi)容可以替換為任意 HTML。

下面例子中在對話框中放了一個 Tab 選項卡:

www.mdui.org - 對話框 - 自定義內(nèi)容

在線運行


調(diào)用方式

通過自定義屬性調(diào)用

使用該方式無需編寫 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 事件。


通過 JavaScript 調(diào)用

實例化組件:

// selector 為對話框的 CSS 選擇器或 DOM 元素或 HTML 字符串
// options 為配置參數(shù),見下面的參數(shù)列表
var inst = new mdui.Dialog(selector, options);

在線運行


參數(shù)

 參數(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:實例


預(yù)定義對話框

MDUI 針對常用場景封裝了幾個預(yù)定義的對話框函數(shù),這些預(yù)定義的對話框只通過 JavaScript 調(diào)用,無需編寫 HTML 代碼。

這些函數(shù)都返回對話框?qū)嵗?/p>


mdui.dialog()

打開一個對話框,標題、內(nèi)容、按鈕等都可以自定義。該方法比較通用,后面的 mdui.alert()、mdui.confirm()、mdui.prompt() 都是使用該方法進行的封裝。

mdui.dialog(options)

www.mdui.org - 對話框 - mdui.dialog()

在線運行


參數(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ù)。


mdui.alert()

打開一個警告框,可以包含標題、內(nèi)容和一個確認按鈕:

mdui.alert(text, onConfirm, options)
mdui.alert(text, title, onConfirm, options)
  • text: 文本
  • title: (可選)標題
  • onConfirm: (可選)點擊確認按鈕的回調(diào)。參數(shù)是對話框的實例。
  • options: (可選)參數(shù),見下表。

www.mdui.org - 對話框 - mdui.alert()

在線運行

 參數(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)閉對話框。


mdui.confirm()

打開一個確認框,可以包含標題、內(nèi)容、一個確認按鈕和一個取消按鈕:

mdui.confirm(text, onConfirm, onCancel, options)
mdui.confirm(text, title, onConfirm, onCancel, options)

  • text: 文本
  • title: (可選)標題
  • onConfirm: (可選)點擊確認按鈕的回調(diào)。參數(shù)為對話框的實例。
  • onCancel: (可選)點擊取消按鈕的回調(diào)。參數(shù)為對話框的實例。
  • options: (可選)參數(shù),見下表。

www.mdui.org - 對話框- mdui.confirm()

在線運行

 參數(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)閉對話框。


mdui.prompt()

打開一個提示用戶輸入的對話框,可以包含標題、內(nèi)容、文本框、一個確認按鈕和一個取消按鈕:

mdui.prompt(label, onConfirm, onCancel, options)
mdui.prompt(label, title, onConfirm, onCancel, options)

  • label: 文本框浮動標簽的文本
  • title: (可選)標題
  • onConfirm: (可選)點擊確認按鈕的回調(diào)。含兩個參數(shù),分別為文本框的值和對話框的實例。
  • onCancel: (可選)點擊取消按鈕的回調(diào)。含兩個參數(shù),分別人文本框的值和對話框的實例。
  • options: (可選)參數(shù),見下表

www.mdui.org - 對話框- mdui.prompt()

在線運行

 參數(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 文本框的類型。
  • text: 單行文本框
  • textarea: 多行文本框
 maxlength int  最大輸入字符數(shù)量
 defaultValue string  文本框的默認值


CSS 類名列表

 類名 效果
 .mdui-dialog 定義一個對話框組件。
 .mdui-dialog-title 定義對話框的標題。
 .mdui-dialog-content 定義對話框的內(nèi)容。
 .mdui-dialog-actions 定義對話框的操作欄。
 .mdui-dialog-actions-stacked 使對話框操作欄的按鈕豎直排列。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號