首頁 web前端 H5教程 關於html5.2 dialog的介紹

關於html5.2 dialog的介紹

Jul 03, 2018 am 10:03 AM
dialog

這篇文章主要介紹了html5.2 dialog簡介詳解的相關資料,內容挺不錯的,現在分享給大家,也給大家做個參考。

2017年12月24號, HTML5.2 標準固化,也代表行動端進入HTML5.3 規劃階段,雖然HTML5.2 固化了,但內部的一些新規範,在行動端的瀏覽器中的支持性還有待提高,這裡我們來看一個算是常用的新被納入標準的標籤吧,它就是dialog 標籤。

1. 寫在前面

說起dialog 標籤,可能很多人都比較陌生,畢竟這個標籤直到HTML5.2 標準固定,也只是chrome 的瀏覽器才支援的,那至於該標籤的用處,根據語義也可以很明顯的理解到,會話。

這裡我們可能會想到的是, alert , confirm 等彈跳窗,是的,它們是同一個家族的,都是彈出框,接下來我們就簡單的看看, dialog 標籤的一些屬性與使用場景。

2. 標籤使用

<dialog open="">      
 <h2>Title</h2>    
 <p>Content</p>
</dialog>
登入後複製

既然是標籤,那麼其實與我們常用的p , p 等標籤一樣,如上面的範例程式碼所示,其內部支援任意的其他元素。

這裡,你可能會注意到,在上面的範例程式碼中的open 屬性,是的,這個是用來控制這個彈跳窗的顯示和隱藏的,當然,你也可以任性的使用css來控制,只是那樣在一些設備的輔助功能時(例如無障礙訪問,讀屏軟體等),就會出現異常了,所以建議還是使用標準中的顯示與隱藏功能。

3. 支援的預設方法

首先, dialog 標籤是HTMLDialogElement 的一個範例,繼承自HTMLElement ,所以,它與p這一的標籤是屬於同層次的標籤,唯一不同的是,它比p有更多的預設功能,這一小節,我們就來看看, dialog 有哪些預設的方法供我們使用。

var dialog = document.getElementById("dialog");
// 假设页面中,有一个id=dialog的dialog标签

// 关闭dialog
dialog.close();

// 以toast的形式显示dialog
dialog.show();

// 以模态框的形式显示dialog
dialog.showModal();

// dialog.close()调用时传入的参数值
dialog.returnVlaue;

// dialog的显示状态
dialog.open;
登入後複製

你可以自己先去範例中,操作一下,然後看看有哪些特色,然後再回來比較一下,接下來的總結:

1: close 方法,可以多次被調用,即使是隱藏狀態,也可以再次被調用。

2: close 可以傳入一個變量,這個變數必須是字串,在 returnVlaue 中表現。

3: show 方法,也可以多次被調用,即使在隱藏狀態,不會有任何問題。

4: show 方法,不會改變 toast 的位置,彈出框原本在什麼位置, show 方法呼叫之後,依然在原有的位置。

5: show 方法,顯示位置緊鄰前一個元素後面,居中,沒有背後的遮罩層, z-index 的顯示方式與relative 不設定z-index 的類似(如果在此之前,沒有呼叫過showModal 的話)。

6: 如果呼叫過 showModal 後,那麼 show 方法後,元素顯示在 showModal 顯示的位置,不會變動(即使內容高度變化了很多)。

7: 如果有兩個 dialog 元素,都呼叫 show 方法,在 html 結構中,後面的 dialog 會永遠覆蓋在前面的那個上層(不管那個 dialog 先呼叫了 show 方法)。

8: showModal 的顯示,背後會有遮罩層,顯示層級是瀏覽器webview 等級的,怎麼理解呢,你可以設定一個元素,等級非常高,在使用showModal 顯示出dialog 屬性後, dialog 都是在最前面的,這點特別適合做模態框,肯定不會在彈出框出現之後,出現層級混亂的情況。

9: showModal 只能呼叫一次,這裡的一次是說,如果dialog 在顯示狀態,那麼在再次呼叫showModal ,就會報錯,並且不能直接執行,或者說,只要open 屬性存在的情況下,再調用,都會報錯,所以還是使用預設的open 屬性來做dialog 的顯示隱藏更好。

10: 如果頁面上有兩個 dialog 元素,都在呼叫 showModal 方法的話,無論他們在 HTML 中的結構,後面呼叫的 dialog 的層級會高於先前呼叫的 dialog 的層級。

11: dialog.returnVlaue 的取值,是dialog.close(string) 呼叫時傳入的值,只支援字串,只有在dialog 的顯示的情況下,呼叫dialog.close 傳入的值,才有效。

12: 如果一直沒有在close 中傳值,那麼returnVlaue 的值為空,如果某次傳值dialog.close("1") ,再下次show 之後, dialog.close() 關閉, returnVlaue 依然等於「1」。

13: open 的回傳值是: true/false 。

4. 支援的預設事件

dialog 還有一個好處就是,它支援出click 等基礎事件之外的,額外兩個針對於dialog 的特殊事件:

var dialog = document.getElementById("dialog");
// 假设页面中,有一个id=dialog的dialog标签

// 当调用close方法时
dialog.onclose = function(){};

// 当在pc端按下esc按键时。不过在chrome版本之后,好像不管用了。
dialog.oncancel = function(){};
登入後複製

現在來看一個範例: dialog 事件範例展示。

也有幾個問題,這裡來列舉一下:

1: 只要呼叫 dialog.close() 來隱藏的 dialog ,才能觸發 onclose 事件。

2: cancel 事件觸發之後,必定會繼續觸發 close 事件, chrome64 版本之後, cancel 的觸發,不是 esc 按鍵了。

3: 如果有多種關閉dialog 的按鈕,那麼在每次呼叫close 的時候傳入不同的值,在close 事件的回呼裡面,使用returnVlaue 的取值,來判斷,是哪個按鈕用來觸發的關閉事件。

5. 其他

前面把dialog 的一些表現進了說明,可能有不全,不準確的情況,也可能隨著時間的推移,有更新的特性出現,歡迎提出補充。

在看前面的範例時,我們也看到了一下不足的地方,例如:樣式特別醜,關於這點,我們可以完全使用CSS把樣式reset掉,不影響語義,和其他的任何東西,放心重構就好了。

這裡只是想說一下, dialog 的表現,所以就不做這些了。

6. 總結

dialog 畢竟屬於彈窗對話的語義化標籤,並且有一些獨有的優勢(例如webview 層級的高度),雖然現在只是chrome支持,但對於以後的使用,依然是很看好的,甚至現在也可以自己兼容一下,在其他瀏覽器,自己去實現一套dialog 的機制(也許已經有這套實現方案了,這裡就不去找了)。

以上就是本文的全部內容,希望對大家的學習有所幫助,更多相關內容請關注PHP中文網!

相關推薦:

關於html5呼叫相機功能的實作

html5呼叫app分享功能的介紹

以上是關於html5.2 dialog的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

AI Hentai Generator

AI Hentai Generator

免費產生 AI 無盡。

熱門文章

R.E.P.O.能量晶體解釋及其做什麼(黃色晶體)
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳圖形設置
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌
威爾R.E.P.O.有交叉遊戲嗎?
1 個月前 By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

h5項目怎麼運行 h5項目怎麼運行 Apr 06, 2025 pm 12:21 PM

運行 H5 項目需要以下步驟:安裝 Web 服務器、Node.js、開發工具等必要工具。搭建開發環境,創建項目文件夾、初始化項目、編寫代碼。啟動開發服務器,使用命令行運行命令。在瀏覽器中預覽項目,輸入開發服務器 URL。發布項目,優化代碼、部署項目、設置 Web 服務器配置。

H5頁面製作究竟指什麼 H5頁面製作究竟指什麼 Apr 06, 2025 am 07:18 AM

H5 頁面製作是指使用 HTML5、CSS3 和 JavaScript 等技術,創建跨平台兼容的網頁。其核心在於瀏覽器解析代碼,渲染結構、樣式和交互功能。常見技術包括動畫效果、響應式設計和數據交互。為避免錯誤,應使用開發者工具調試;而性能優化和最佳實踐則包括圖像格式優化、減少請求和代碼規範等,以提高加載速度和代碼質量。

h5怎麼製作點擊圖標 h5怎麼製作點擊圖標 Apr 06, 2025 pm 12:15 PM

製作 H5 點擊圖標的步驟包括:在圖像編輯軟件中準備方形源圖像。在 H5 編輯器中添加交互性,設置點擊事件。創建覆蓋整個圖標的熱點。設置點擊事件的操作,如跳轉頁面或觸發動畫。導出 H5 文檔為 HTML、CSS 和 JavaScript 文件。將導出的文件部署到網站或其他平台。

什麼是H5編程語言? 什麼是H5編程語言? Apr 03, 2025 am 12:16 AM

H5不是獨立編程語言,而是HTML5、CSS3和JavaScript的集合,用於構建現代Web應用。 1.HTML5定義網頁結構和內容,提供新標籤和API。 2.CSS3控製樣式和佈局,引入動畫等新特性。 3.JavaScript實現動態交互,通過DOM操作和異步請求增強功能。

H5頁面製作適合哪些應用場景 H5頁面製作適合哪些應用場景 Apr 05, 2025 pm 11:36 PM

H5(HTML5)適合應用於輕量級應用,如營銷活動頁面、產品展示頁面和企業宣傳微網站。它優勢在於跨平台性和豐富的交互性,但局限性在於復雜的交互和動畫、本地資源訪問和離線功能。

H5頁面製作是前端開發嗎 H5頁面製作是前端開發嗎 Apr 05, 2025 pm 11:42 PM

是的,H5頁面製作是前端開發的重要實現方式,涉及HTML、CSS和JavaScript等核心技術。開發者通過巧妙結合這些技術,例如使用&lt;canvas&gt;標籤繪製圖形或使用JavaScript控制交互行為,構建出動態且功能強大的H5頁面。

h5怎麼製作彈窗 h5怎麼製作彈窗 Apr 06, 2025 pm 12:12 PM

H5 彈窗製作步驟:1. 確定觸發方式(點擊式、時間式、退出式、滾動式);2. 設計內容(標題、正文、行動按鈕);3. 設置樣式(大小、顏色、字體、背景);4. 實現代碼(HTML、CSS、JavaScript);5. 測試和部署。

如何使用地理位置API處理用戶位置隱私和權限? 如何使用地理位置API處理用戶位置隱私和權限? Mar 18, 2025 pm 02:16 PM

本文討論了使用GeOlocation API管理用戶位置隱私和權限,並強調要求權限,確保數據安全性並遵守隱私法律的最佳實踐。

See all articles