1. Web
  2. CSS
  3. Reference
  4. Selectors
  5. :modal

Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

:modal CSS-Pseudo-Klasse

Baseline Weitgehend verfügbar

Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit September 2022 browserübergreifend verfügbar.

Die :modal CSS Pseudo-Klasse selektiert ein Element, das sich in einem Zustand befindet, in dem es alle Interaktionen mit Elementen außerhalb von sich ausschließt, bis die Interaktion verworfen wurde. Mehrere Elemente können gleichzeitig durch die :modal Pseudo-Klasse ausgewählt werden, aber nur eines von ihnen wird aktiv sein und Eingaben empfangen können.

Probieren Sie es aus

button {
 display: block;
 margin: auto;
 width: 10rem;
 height: 2rem;
}
:modal {
 background-color: beige;
 border: 2px solid burlywood;
 border-radius: 5px;
}
p {
 color: black;
}
<p>Would you like to see a new random number?</p>
<button id="showNumber">Show me</button>
<dialog id="favDialog">
 <form method="dialog">
 <p>Lucky number is: <strong id="number"></strong></p>
 <button>Close dialog</button>
 </form>
</dialog>
const showNumber = document.getElementById("showNumber");
const favDialog = document.getElementById("favDialog");
const number = document.getElementById("number");
showNumber.addEventListener("click", () => {
 number.innerText = Math.floor(Math.random() * 1000);
 favDialog.showModal();
});

Syntax

css
:modal {
 /* ... */
}

Verwendungshinweise

Beispiele für Elemente, die die Benutzerinteraktion mit dem Rest der Seite verhindern und von der :modal Pseudo-Klasse ausgewählt werden, sind:

  • Das dialog Element, das mit der showModal() API geöffnet wird.
  • Das Element, das durch die :fullscreen Pseudo-Klasse ausgewählt wird, wenn es mit der requestFullscreen() API geöffnet wird.

Beispiele

Styling eines modalen Dialogs

Dieses Beispiel styled einen modalen Dialog, der geöffnet wird, wenn die Schaltfläche "Details aktualisieren" aktiviert wird. Dieses Beispiel basiert auf dem <dialog>-Element Beispiel.

<!-- Basic modal dialog containing a form -->
<dialog id="favDialog">
 <form method="dialog">
 <p>
 <label
 >Favorite animal:
 <select>
 <option value="default">Choose...</option>
 <option>Brine shrimp</option>
 <option>Red panda</option>
 <option>Spider monkey</option>
 </select>
 </label>
 </p>
 <div>
 <button value="cancel">Cancel</button>
 <button id="confirmBtn" value="default">Confirm</button>
 </div>
 </form>
</dialog>
<p>
 <button id="updateDetails">Update details</button>
</p>
<output></output>

CSS

css
:modal {
 border: 5px solid red;
 background-color: yellow;
 box-shadow: 3px 3px 10px rgb(0 0 0 / 50%);
}
const updateButton = document.getElementById("updateDetails");
const favDialog = document.getElementById("favDialog");
const outputBox = document.querySelector("output");
const selectEl = favDialog.querySelector("select");
const confirmBtn = favDialog.querySelector("#confirmBtn");
// If a browser doesn't support the dialog, then hide the
// dialog contents by default.
if (typeof favDialog.showModal !== "function") {
 favDialog.hidden = true;
 // Your fallback script
}
// "Update details" button opens the <dialog> modally
updateButton.addEventListener("click", () => {
 if (typeof favDialog.showModal === "function") {
 favDialog.showModal();
 } else {
 outputBox.value = "Sorry, the dialog API is not supported by this browser.";
 }
});
// "Favorite animal" input sets the value of the submit button
selectEl.addEventListener("change", (e) => {
 confirmBtn.value = selectEl.value;
});
// "Confirm" button of form triggers "close" on dialog because of [method="dialog"]
favDialog.addEventListener("close", () => {
 outputBox.value = `${
 favDialog.returnValue
 } button clicked - ${new Date().toString()}`;
});

Ergebnis

Spezifikationen

Spezifikation
HTML
# selector-modal
Selectors Level 4
# selectordef-modal

Browser-Kompatibilität

Siehe auch

Help improve MDN

Erfahren Sie, wie Sie beitragen können Diese Seite wurde automatisch aus dem Englischen übersetzt.

AltStyle によって変換されたページ (->オリジナル) /