::backdrop
Baseline 廣泛可用 *
試一試
button {
font-size: 1.2rem;
padding: 5px 15px;
}
dialog::backdrop {
background-color: salmon;
}
<button id="showDialogBtn">Show a dialog</button>
<dialog id="favDialog">
<form method="dialog">
<p>The background shown outside of this dialog is a backdrop.</p>
<button id="confirmBtn">Close the dialog</button>
</form>
</dialog>
const showDialogBtn = document.getElementById("showDialogBtn");
const favDialog = document.getElementById("favDialog");
showDialogBtn.addEventListener("click", () => favDialog.showModal());
語法
css
::backdrop {
/* ... */
}
描述
背景會在以下情況中出現
- 使用 全屏 API 的
Element.requestFullscreen()方法進入全屏模式的元素。 - 透過
HTMLDialogElement.showModal()呼叫在頂層顯示的<dialog>元素。 - 透過
HTMLElement.showPopover()呼叫在頂層顯示的 彈出框 元素。
當多個元素被放置到頂層時,每個元素都有其自己的 ::backdrop 偽元素。
css
/* Backdrop is only displayed when dialog is opened with dialog.showModal() */
dialog::backdrop {
background: rgb(255 0 0 / 25%);
}
元素在頂層以後進先出(LIFO)的方式堆疊。::backdrop 偽元素可以遮蓋、樣式化或完全隱藏位於頂層元素下方的所有內容。
::backdrop 既不繼承其他元素,也不被其他元素繼承。對適用於此偽元素的屬性沒有限制。
示例
樣式化模態對話方塊的背景
在此示例中,我們使用 ::backdrop 偽元素來樣式化模態 <dialog> 開啟時使用的背景。
HTML
我們包含一個 <button>,單擊後將開啟包含的 <dialog>。當 <dialog> 開啟時,我們將焦點設定在關閉對話方塊的按鈕上。
html
<dialog>
<button autofocus>Close</button>
<p>This modal dialog has a beautiful backdrop!</p>
</dialog>
<button>Show the dialog</button>
CSS
我們為背景添加了一個背景,使用 CSS 漸變建立了一個色彩繽紛的甜甜圈。
css
::backdrop {
background-image:
radial-gradient(
circle,
white 0 5vw,
transparent 5vw 20vw,
white 20vw 22.5vw,
#eeeeee 22.5vw
),
conic-gradient(
#272b66 0 50grad,
#2d559f 50grad 100grad,
#9ac147 100grad 150grad,
#639b47 150grad 200grad,
#e1e23b 200grad 250grad,
#f7941e 250grad 300grad,
#662a6c 300grad 350grad,
#9a1d34 350grad 400grad,
#43a1cd 100grad 150grad,
#ba3e2e
);
}
JavaScript
對話方塊使用 .showModal() 方法以模態方式開啟,並使用 .close() 方法關閉。
js
const dialog = document.querySelector("dialog");
const showButton = document.querySelector("dialog + button");
const closeButton = document.querySelector("dialog button");
// "Show the dialog" button opens the dialog modally
showButton.addEventListener("click", () => {
dialog.showModal();
});
// "Close" button closes the dialog
closeButton.addEventListener("click", () => {
dialog.close();
});
結果
規範
| 規範 |
|---|
| CSS 定位佈局模組第 4 級 # 背景 |
瀏覽器相容性
載入中…
另見
:fullscreen偽類<dialog>HTML 元素- Fullscreen API
popoverHTML 全域性屬性- Popover API