PFAD: ./module/css/css3/

DATEI: string(25) "00Inhaltsverzeichnis3.php"
DATEI: string(19) "17Pseudoklassen.php"
DATEI: string(21) "18Strukturelle PK.php"
DATEI: string(16) "19Weitere PK.php"
DATEI: string(20) "20Pseudoelemente.php"
DATEI: string(31) "21first-letterUndfirst-line.php"
DATEI: string(17) "22placeholder.php"
DATEI: string(14) "23backdrop.php"
DATEI: string(13) "24Effekte.php"

css mit Adi Prinz

::backdrop

Das Pseudoelement ::backdrop gestaltet die Fläche hinter einem Element, das im sogenannten Top Layer des Browsers angezeigt wird. Dazu gehören beispielsweise modal geöffnete Dialogfenster und Elemente im Vollbildmodus.

::backdrop bei einem Dialogfenster

Ein Dialogfenster wird mit dem HTML-Element <dialog> erstellt. Wird es mit der JavaScript-Methode showModal() geöffnet, erzeugt der Browser dahinter ein ::backdrop.

Beispiel für ::backdrop

Hinter diesem modalen Dialog wird das ::backdrop angezeigt.

<button type="button" id="open-dialog">
  Dialog öffnen
</button>

<dialog id="example-dialog">
  <h4>Beispiel für ::backdrop</h4>

  <p>
    Hinter diesem modalen Dialog wird das
    ::backdrop angezeigt.
  </p>

  <form method="dialog">
    <button type="submit">
      Dialog schließen
    </button>
  </form>
</dialog>
    

Hintergrundfläche gestalten

Das Pseudoelement wird direkt an den Selektor des Dialogfensters angefügt. Häufig wird eine halbtransparente dunkle Hintergrundfarbe verwendet.

#example-dialog::backdrop {
  background-color: rgba(0, 0, 0, 0.65);
}
    

Mit backdrop-filter kann der sichtbare Seiteninhalt hinter dem Dialog zusätzlich weichgezeichnet werden.

#example-dialog::backdrop {
  background-color: rgba(33, 37, 41, 0.65);
  backdrop-filter: blur(4px);
}
    
backdrop-filter und ::backdrop sind zwei unterschiedliche Dinge: ::backdrop ist ein Pseudoelement, backdrop-filter dagegen eine CSS-Eigenschaft.

Dialog mit JavaScript öffnen

Damit ein modales Dialogfenster und sein ::backdrop angezeigt werden, wird showModal() verwendet.

const dialog = document.getElementById("example-dialog");
const openButton = document.getElementById("open-dialog");

openButton.addEventListener("click", () => {
  dialog.showModal();
});
    

Der Schließen-Button befindet sich in einem Formular mit method="dialog". Dadurch wird das Dialogfenster ohne zusätzliches JavaScript geschlossen.

Methode Darstellung ::backdrop
show() Nicht modales Dialogfenster Wird nicht angezeigt
showModal() Modales Dialogfenster Wird angezeigt
close() Schließt das Dialogfenster Wird entfernt

Dialog durch Klick auf den Hintergrund schließen

Das ::backdrop ist kein gewöhnliches HTML-Element. Deshalb kann dafür kein eigener Event-Listener eingerichtet werden. Der Klick wird stattdessen am Dialogfenster ausgewertet.

dialog.addEventListener("click", (event) => {
  if (event.target === dialog) {
    dialog.close();
  }
});
    
Diese einfache Variante funktioniert, wenn die sichtbaren Inhalte des Dialogs in einem eigenen inneren Element liegen. Andernfalls sollte die Position des Mausklicks genauer geprüft werden.

::backdrop im Vollbildmodus

Auch ein Element, das mit der Fullscreen API im Vollbildmodus angezeigt wird, besitzt ein ::backdrop.

Vollbild-Beispiel

Dieses Element kann in den Vollbildmodus versetzt werden.

#fullscreen-example::backdrop {
  background-color: #212529;
}
    
const fullscreenElement =
  document.getElementById("fullscreen-example");

const openFullscreenButton =
  document.getElementById("open-fullscreen");

const closeFullscreenButton =
  document.getElementById("close-fullscreen");

openFullscreenButton.addEventListener("click", () => {
  fullscreenElement.requestFullscreen();
});

closeFullscreenButton.addEventListener("click", () => {
  if (document.fullscreenElement) {
    document.exitFullscreen();
  }
});
    
Der Vollbildmodus muss normalerweise durch eine Benutzeraktion wie einen Klick gestartet werden. Mit der Taste Esc kann er ebenfalls beendet werden.

Geeignete CSS-Eigenschaften

Das ::backdrop kann ähnlich wie eine große Fläche hinter dem geöffneten Element gestaltet werden.

Bereich Beispiele
Hintergrund background-color, background-image
Filter backdrop-filter, filter
Deckkraft opacity
Animation transition, animation

In der Praxis reichen meistens eine halbtransparente background-color und eventuell ein backdrop-filter aus.

Wichtige Hinweise

  • ::backdrop wird nur bei Elementen in der obersten Darstellungsebene des Browsers erzeugt.
  • Bei einem <dialog> erscheint es nur nach showModal(), nicht nach show().
  • Das Pseudoelement ist kein eigenes HTML-Element.
  • Ein modales Dialogfenster sollte immer über Tastatur und Schaltfläche geschlossen werden können.
  • Der Hintergrund muss genügend Kontrast erzeugen, darf den Dialoginhalt aber nicht beeinträchtigen.

Übersicht der Pseudoelemente

Pseudoelemente ermöglichen es, bestimmte Teile eines Elements zu gestalten oder zusätzliche Inhalte darzustellen, ohne dafür weitere HTML-Elemente einfügen zu müssen.

Die folgende Übersicht fasst die wichtigsten Pseudoelemente und ihre typischen Einsatzbereiche zusammen.

Pseudoelement Beschreibung Typischer Einsatz
::before Fügt vor dem eigentlichen Inhalt eines Elements einen erzeugten Inhalt ein. Icons, Hinweise und dekorative Elemente
::after Fügt nach dem eigentlichen Inhalt eines Elements einen erzeugten Inhalt ein. Symbole, Markierungen und Gestaltungselemente
::first-letter Wählt den ersten Buchstaben eines Textblocks aus. Initialbuchstaben und typografische Hervorhebungen
::first-line Wählt die erste formatierte Zeile eines Textblocks aus. Hervorhebung der ersten Textzeile
::selection Gestaltet Text, den der Benutzer markiert hat. Eigene Farben für Textmarkierungen
::marker Gestaltet das Aufzählungszeichen oder die Nummer eines Listeneintrags. Individuelle Listenpunkte und Nummerierungen
::placeholder Gestaltet den Platzhaltertext eines Formularelements. Hinweistexte in Eingabefeldern
::file-selector-button Wählt die Schaltfläche eines Datei-Eingabefeldes aus. Gestaltung des Buttons für die Dateiauswahl
::backdrop Gestaltet die Fläche hinter einem Element im Top Layer. Modale Dialogfenster und Vollbildmodus

Schreibweise der Pseudoelemente

Pseudoelemente werden in modernem CSS mit zwei Doppelpunkten :: geschrieben. Sie werden direkt an einen Selektor angefügt.

selektor::pseudoelement {
  eigenschaft: wert;
}
    

Beispiele:

p::first-letter {
  font-size: 2em;
}

li::marker {
  color: red;
}

input::placeholder {
  color: grey;
}
    
Die Schreibweise mit zwei Doppelpunkten unterscheidet Pseudoelemente eindeutig von Pseudoklassen. Pseudoklassen verwenden nur einen Doppelpunkt, beispielsweise :hover oder :focus.
Art Schreibweise Beispiel
Pseudoklasse Ein Doppelpunkt a:hover
Pseudoelement Zwei Doppelpunkte p::first-line

Wichtige Hinweise

  • Pseudoelemente werden in modernem CSS mit zwei Doppelpunkten :: geschrieben.
  • Sie werden an einen Selektor angefügt, beispielsweise p::first-line.
  • Nicht jedes Pseudoelement kann mit allen CSS-Eigenschaften gestaltet werden.
  • ::before und ::after benötigen normalerweise die Eigenschaft content, damit sie sichtbar werden.
  • Erzeugte Inhalte sollten keine wichtigen Informationen enthalten, da ihre Ausgabe durch Hilfstechnologien unterschiedlich sein kann.
  • Einige Pseudoelemente gelten nur für bestimmte HTML-Elemente oder Zustände, beispielsweise ::placeholder bei Eingabefeldern oder ::backdrop bei Elementen im Top Layer.
Pseudoelemente ergänzen die Gestaltung eines Dokuments, ohne dass dafür zusätzliche HTML-Elemente erforderlich sind. Für wichtige Inhalte sollte jedoch immer echtes HTML verwendet werden.