::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