99久久国产露脸精品麻豆,欧美日韩精品小说,亚洲免费在线美女视频,国产三级中文字幕,91极品国产情侣高潮对白,国产亚洲一区二区三区不卡片,欧美jizz精品欧美性,久久国产精品久久国产片

HTML5 <dialog> 標簽

袁志蒙 1883次瀏覽

摘要:dialog 是HTML5新增的語義化雙標簽,用于展示一個交互式的模態對話框。它既可以創建模態對話框(用戶不能與打開對話框的頁面進行交互,直到對話框關閉,模態對話帶半透明背景...

dialogHTML5新增的語義化雙標簽,用于展示一個交互式的模態對話框。

它既可以創建模態對話框(用戶不能與打開對話框的頁面進行交互,直到對話框關閉,模態對話帶半透明背景遮罩層的對話框,也可以使用 esc鍵 關閉對話框),也可以創建非模態對話框(用戶可以與打開對話框的頁面進行交互,同時也可以與對話框進行交互,只能點擊按鈕關閉對話框,不能使用 esc鍵 關閉對話框)。

HTML<dialog>標簽

一、 基礎結構

<dialog> 是雙標簽,可以在它的頭尾標簽之間自定義對話框內容。如:

<dialog>
    <h1>這個是對話框的內容</h1>
    <p>
        這是一個簡單的對話框
    </p>
</dialog>


默認<dialogo> 標簽是不可見的。

要顯示對話框,需要添加 open 屬性。

<dialog open>
    <h1>這個是對話框的內容</h1>
    <p>
        這是一個簡單的對話框
    </p>
</dialog>


注意幾個細節:

<dialog> 標簽的顯示與隱藏是通過 display:block/none; 進行操作的。意味著 <dialog> 標簽默認不能進行透明度漸隱變化。

<dialog> 標簽默認是絕對定位的。

<dialog> 標簽自帶有 1em 的 padding 值。

<dialog> 標簽是通過設置 margin:auto 實現的水平居中。

二、JS控制對話框的顯示隱藏

1. show()

非模態化顯示對話框,對其添加open屬性。在非模態化下,不能使用 esc 鍵讓對話框消失。

如:點擊按鈕,顯示對話框。

let btn = document.getElementById("btn");
let myDialog = document.querySelector("#myDialog"); // 獲取對話框標簽
btn.addEventListener("click",function (e) {
    myDialog.show();
});

2.showModal()

模態化顯示對話框,對其添加open屬性并且顯示遮罩層,同時按ESC鍵可以關閉對話框。

let btn = document.getElementById("btn");
let myDialog = document.querySelector("#myDialog"); // 獲取對話框標簽
btn.addEventListener("click",function (e) {
    myDialog.showModal();
});

3.close()

關閉對話框

let myDialog = document.querySelector("#myDialog"); // 獲取對話框標簽
myDialog.close();


三、CSS樣式控制

/** 非模態化樣式 **/
dialog {
	position: fixed;
	top: 50%;
	left: 50%;
	height: 200px;
	width: 400px;
	margin-top:-100px;
	margin-left:-200px;
	border: 1px solid #ddd;
	border-radius: 2px;
	padding: 10px;
	box-shadow:1px 1px 50px rgba(0,0,0,.3)
}

/** 模態化樣式 **/
dialog:modal {
	padding: 15px;
    max-width: calc((100% - 6px) - 2em);
    max-height: calc((100% - 6px) - 2em);
	border-radius: 2px;
	border:1px solid #ddd;
	box-shadow:1px 1px 50px rgba(0,0,0,.3)
}
/** 模態化 遮罩層樣式 **/
dialog::backdrop {
    position: fixed;
    top: 0px;
    right: 0px;
    bottom: 0px;
    left: 0px;
    background: rgba(0, 0, 0, 0.3);
}

四、綜合案例

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>dialog彈窗</title>
        <style>
            dialog:modal {
                padding: 15px;
                max-width: calc((100% - 6px) - 2em);
                max-height: calc((100% - 6px) - 2em);
                border-radius: 2px;
                border: 1px solid #ddd;
                box-shadow: 1px 1px 50px rgba(0, 0, 0, .3)
            }
            dialog::backdrop {
                position: fixed;
                top: 0px;
                right: 0px;
                bottom: 0px;
                left: 0px;
                background: rgba(0, 0, 0, 0.3);
            }
        </style>
    </head>
    <body>

        <!-- 彈框 -->
        <dialog closeByMask id="dialog">
            <p>調查問卷</p>
            <form action="" onsubmit="return submitForm(this)">
                <div>
                    姓名:<input type="text" name="name">
                </div>
                <div>
                    年齡:<input type="text" name="age">
                </div>
                <div>
                    <input type="submit" value="確定">
                    <button type="button" id="btn-close">關閉</button>
                </div>
            </form>
        </dialog>

        <button id="btn-open">打開對話</button>

        <script>
            var btnOpen = document.querySelector("#btn-open");
            var btnClose = document.querySelector("#btn-close");
            var dialog = document.querySelector("#dialog");

            // 打開彈窗
            btnOpen.addEventListener("click", function() {
                // dialog.show();  // 非模態彈窗
                dialog.showModal();  // 模態彈窗
            });

            // 關閉彈窗
            btnClose.addEventListener("click", function() {
                dialog.close();
            });

            // 表單提交
            function submitForm(obj) {
                console.log('姓名:', obj.name.value);
                console.log('年齡:', obj.age.value);
                dialog.close();
                return false;
            }

            // 點擊遮罩層關閉彈窗(如不需要點擊遮罩層關閉,可以刪除)
            function closeDialog(event) {
                if (event.target === dialog) {
                    dialog.close();
                }
            }
            // 點擊遮罩層關閉彈窗(如不需要點擊遮罩層關閉,可以刪除)
            dialog.addEventListener("click", closeDialog);
        </script>


    </body>
</html>


隨機內容

表情

共0條評論
  • 這篇文章還沒有收到評論,趕緊來搶沙發吧~