目錄
對話框的組成
存在問題
元素。
除了我們常見的提示訊息的彈出層外,還有一類別比較使用的是帶有表單的彈出層。
demo
首頁 web前端 H5教程 HTML5中dialog元素的詳細講解(程式碼範例)

HTML5中dialog元素的詳細講解(程式碼範例)

Oct 13, 2018 pm 02:51 PM
css3 html5

這篇文章帶給大家的內容是關於HTML5中dialog元素的詳細講解(程式碼範例),有一定的參考價值,有需要的朋友可以參考一下,希望對你有幫助。

對話框(別稱模態框,浮層)是web專案中用於使用者互動的重要部分,我們最常見的就是js中alert(),confirm(),但是這個對話框的不美觀,也不能自訂樣式,所以在開發的過程中,一般會根據自己的需求造輪子或是使用第三方的。

對話框的組成

常見的彈出框形式:

位置:螢幕的左上角,右上角,左下角,右下角,垂直居中等

大小:定寬定高,定寬不定高,不定寬不定高等

開發中的對話框形式就是位置和大小隨機組合的一種情況。

但有一種情況(不定寬高的垂直居中)不易實現(可以使用display:table或css3的translate或flex實現),具體可參考水平垂直居中佈局

上面的對話框包含內容的容器,還有一個是對話框下面的遮罩層(mask),遮罩層是用戶觸發彈出框後,形成的一個對話框與頁面主體的分割圖層,它的存在可以給使用者一個更明顯的視覺差效果,同時也起到避免使用者觸發對話框後的其他不必要的頁面主體操作,從而產生更有的使用者體驗。

存在問題

雖然,有很多對話框的輪子供我們選擇,但是我們面臨著各種各樣的問題。

  • 到底選擇哪一種對話框(對於有選擇綜合症的人來說一個頭痛的問題)

  • 可用性(api的簡單與否,是否依賴了其他第三方的函式庫)

  • 可擴充性

  • 瀏覽器的相容性支援

那麼,有沒有一個簡單的方法來做做一個對話框呢?當然有,我們可以使用HTML5的

dialog

元素。

HTML5(dialog)

<dialog open>
    <h2> Hello world.</h2>
</dialog>
登入後複製

很簡單,我們使用上面的程式碼就可以做一個彈出內容為‘Hello world.’ 的對話框。 控制對話方塊的顯示/隱藏也很容易,新增 open 屬性表示顯示,去除為隱藏。當然,我們也可以透過DOM介面來控制

dialog

的顯隱(show(), close())對話方塊下面的遮罩層,我們可以使用: :backgrop 偽元素,而它的激活,我們需要使用showModal() 這個DOM的API,::backgrop 的特性是它的位置在dialog之下,在任何

z-index

之上。 使用showModal() 不但可以讓遮罩層顯示,dialog容器也顯示,所以用到::backdrop 的時候,可以用showModal () 取代show() 這個API;如果按鍵盤ESC 鍵將關閉彈出層,當然你一可以使用

close()

這個DOM API。 我們可以設定

::backdrop

這個圖層為半透明圖層,程式碼如下:

dialog::backdrop {
  background-color: rgba(0, 0, 0, 0.75);
}
登入後複製

除了我們常見的提示訊息的彈出層外,還有一類別比較使用的是帶有表單的彈出層。

帶有表單的彈出層

我們可以使用HTML5的dialog元素結合form元素來做這些彈出層嗎?

答案:可以

我們要怎麼做才能讓form元素和dialog元素緊密的結合呢? 答案:我們只需要在dialog元素中加上method="dialog" 這個屬性即可,這樣就可以將button元素的屬性

value

的值傳遞給dialog元素。

<dialog>
  <form method="dialog">
    <p>确定 or 取消</p>
    <button type="submit" value="yes">确定</button>
    <button type="submit" value="no">取消</button>
  </form>
</dialog>

<script>
    var dialog = document.querySelector('dialog')
    dialog.showModal()
    dialog.addEventListener('close', function(event) {
        console.log(dialog.returnValue)
    })
</script>
登入後複製

demo

var dialog = document.querySelector(&#39;dialog&#39;)
dialog.showModal()
dialog.addEventListener(&#39;close&#39;, function(event) {
  alert(dialog.returnValue)
})
登入後複製
<dialog>
  <form method="dialog">
    <p>确定 or 取消</p>
    <button type="submit" value="yes">确定</button>
    <button type="submit" value="no">取消</button>
  </form></dialog>
登入後複製
dialog::backdrop {  background: rgba(0, 0, 0, 0.6)
}
登入後複製

瀏覽器相容性

#雖然,這是比較好用的HTML5,但是還存在相容性問題,chrome和opera支援的比較好,Firefox中是實驗特性,但是IE,Edge, safari支援的不好,ios不支持,Android也支援的不夠好,只有Android6以後支援。具體可參考caniuse

那麼,能不能讓舊版的瀏覽器支援HTML5的dialog呢?首先,我們想到的是有沒有一個支援dialog的polyfill,就像支援es6新特性的babel-polyfill一樣,確實有這樣一個開源專案a11y-dialog,它分別提供了vue和react的不同版本。

#######

以上是HTML5中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脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

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

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

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

HTML 中的表格邊框 HTML 中的表格邊框 Sep 04, 2024 pm 04:49 PM

HTML 表格邊框指南。在這裡,我們以 HTML 中的表格邊框為例,討論定義表格邊框的多種方法。

HTML 中的巢狀表 HTML 中的巢狀表 Sep 04, 2024 pm 04:49 PM

這是 HTML 中巢狀表的指南。這裡我們討論如何在表中建立表格以及對應的範例。

HTML 左邊距 HTML 左邊距 Sep 04, 2024 pm 04:48 PM

HTML 左邊距指南。在這裡,我們討論 HTML margin-left 的簡要概述及其範例及其程式碼實作。

HTML 表格佈局 HTML 表格佈局 Sep 04, 2024 pm 04:54 PM

HTML 表格佈局指南。在這裡,我們詳細討論 HTML 表格佈局的值以及範例和輸出。

HTML 輸入佔位符 HTML 輸入佔位符 Sep 04, 2024 pm 04:54 PM

HTML 輸入佔位符指南。在這裡,我們討論 HTML 輸入佔位符的範例以及程式碼和輸出。

HTML 有序列表 HTML 有序列表 Sep 04, 2024 pm 04:43 PM

HTML 有序列表指南。在這裡我們也分別討論了 HTML 有序列表和類型的介紹以及它們的範例

在 HTML 中移動文字 在 HTML 中移動文字 Sep 04, 2024 pm 04:45 PM

HTML 中的文字移動指南。在這裡我們討論一下marquee標籤如何使用語法和實作範例。

HTML onclick 按鈕 HTML onclick 按鈕 Sep 04, 2024 pm 04:49 PM

HTML onclick 按鈕指南。這裡我們分別討論它們的介紹、工作原理、範例以及各個事件中的onclick事件。

See all articles