您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了html5.2中怎么使用dialog標簽,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶大家一起來研究并學習一下“html5.2中怎么使用dialog標簽”這篇文章吧。
1、簡易性:超級文本標記語言版本升級采用超集方式,從而更加靈活方便,適合初學前端開發者使用。 2、可擴展性:超級文本標記語言的廣泛應用帶來了加強功能,增加標識符等要求,超級文本標記語言采取子類元素的方式,為系統擴展帶來保證。 3、平臺無關性:超級文本標記語言能夠在廣泛的平臺上使用,這也是萬維網盛行的一個原因。 4、通用性:HTML是網絡的通用語言,它允許網頁制作人建立文本與圖片相結合的復雜頁面,這些頁面可以被網上任何其他人瀏覽到,無論使用的是什么類型的電腦或瀏覽器。
2017年12月24號, HTML5.2 標準固化,也代表著移動端進入 HTML5.3 規劃階段,雖然 HTML5.2 固化了,但內部的一些新規范,在移動端的瀏覽器中的支持性還有待提高,這里我們來看一個算是常用的新被納入標準的標簽吧,它就是 dialog 標簽。
1. 寫在前面
說起 dialog 標簽,可能很多人都比較陌生,畢竟這個標簽直到 HTML5.2 標準固定,也只是 chrome 的瀏覽器才支持的,那至于該標簽的用處,根據語義也可以很明顯的理解到,會話。
這里我們可能會想到的是, alert , confirm 等彈窗,是的,它們是同一個家族的,都是彈出框,接下來我們就簡單的看看, dialog 標簽的一些屬性與使用場景。
2. 標簽使用
<dialog open=""> <h3>Title</h3> <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 的表現,所以就不做這些了。
以上就是關于“html5.2中怎么使用dialog標簽”的內容,如果改文章對你有所幫助并覺得寫得不錯,勞請分享給你的好友一起學習新知識,若想了解更多相關知識內容,請多多關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。