::backdrop
试一试
语法
css
::backdrop {
/* ... */
}
描述
背景出现在以下情况中
- 使用 全屏 API
Element.requestFullscreen()
方法置于全屏模式的元素。 <dialog>
元素,通过HTMLDialogElement.showModal()
调用显示在顶层。- Popover 元素,通过
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,
#fff 0 5vw,
transparent 5vw 20vw,
#fff 20vw 22.5vw,
#eee 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 # 背景 |
浏览器兼容性
BCD 表格仅在浏览器中加载
另请参阅
:fullscreen
伪类<dialog>
HTML 元素- 全屏 API
popover
HTML 全局属性- Popover API