::backdrop

Baseline 廣泛可用 *

此特性已經十分成熟,可在許多裝置和瀏覽器版本上使用。自 2022 年 3 月起,它已在各瀏覽器中可用。

* 此特性的某些部分可能存在不同級別的支援。

::backdrop CSS 偽元素 是一個與視口大小相同的盒子,它渲染在頂層中任何正在呈現的元素之下。

試一試

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 {
  /* ... */
}

描述

背景會在以下情況中出現

當多個元素被放置到頂層時,每個元素都有其自己的 ::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 級
# 背景

瀏覽器相容性

另見