Pseudo-Elemente
Ein CSS-Pseudo-Element ist ein Schlüsselwort, das einem Selektor hinzugefügt wird, um einen spezifischen Teil des ausgewählten Elements oder der Elemente zu gestalten.
Syntax
selector::pseudo-element {
property: value;
}
Zum Beispiel kann ::first-line verwendet werden, um die Schriftart der ersten Zeile eines Absatzes zu ändern.
/* The first line of every <p> element. */
p::first-line {
color: blue;
text-transform: uppercase;
}
Doppelte Doppelpunkte (::) werden für Pseudo-Elemente verwendet. Dies unterscheidet Pseudo-Elemente von Pseudoklassen, die in ihrer Notation einen einzelnen Doppelpunkt (:) verwenden. Beachten Sie, dass Browser die einheitliche Doppelpunktsyntax für die ursprünglichen vier Pseudo-Elemente unterstützen: ::before, ::after, ::first-line, und ::first-letter.
Pseudo-Elemente existieren nicht unabhängig. Das Element, von dem ein Pseudo-Element ein Teil ist, wird als sein ursprüngliches Element bezeichnet. Ein Pseudo-Element muss nach allen anderen Komponenten im komplexen oder zusammengesetzten Selektor erscheinen. Das letzte Element im Selektor ist das ursprüngliche Element des Pseudo-Elements. Zum Beispiel können Sie die erste Zeile eines Absatzes mit p::first-line auswählen, aber nicht die Kinder der ersten Zeile. Daher ist p::first-line > * ungültig.
Ein Pseudo-Element kann basierend auf dem aktuellen Zustand des ursprünglichen Elements ausgewählt werden. Zum Beispiel wählt p:hover::first-line die erste Zeile (Pseudo-Element) eines Absatzes, wenn der Absatz selbst gehovt wird (Pseudoklasse).
Hinweis: Wenn eine Selektorliste einen ungültigen Selektor enthält, wird der gesamte Stilblock ignoriert.
Typografische Pseudo-Elemente
::first-line-
Die erste Zeilenbox des ursprünglichen Elements.
::first-letter-
Der erste Buchstabe, die erste Zahl oder das erste Symbolzeichen auf der ersten Linie seines ursprünglichen Elements.
::cue-
Die WebVTT-Hinweise innerhalb eines ausgewählten Elements. Dies kann verwendet werden, um Untertitel und andere Hinweise zu gestalten in Medien mit VTT-Spuren. Das CSS Pseudo-Elemente Modul definiert auch die Sub-Pseudo-Elemente
::postfixund::prefix. Diese werden von keinem Browser unterstützt.
Hervorhebungspseudo-Elemente
Wählt Dokumentabschnitte basierend auf Inhalt und Dokumentstatus aus und ermöglicht es, diese Bereiche unterschiedlich zu gestalten, um diesen Status dem Benutzer anzuzeigen.
::selection-
Der Teil eines Dokuments, der ausgewählt wurde.
::target-text-
Das Zielelement des Dokuments. Das Zielelement wird mit Hilfe des Fragmentidentifikators der URL identifiziert.
::spelling-error-
Ein Textabschnitt, von dem der Browser annimmt, dass er falsch geschrieben ist.
::grammar-error-
Ein Textabschnitt, von dem der Browser annimmt, dass er grammatikalisch nicht korrekt ist.
::highlight()-
Die Elemente im Highlight-Register. Es wird verwendet, um benutzerdefinierte Hervorhebungen zu erstellen.
Baumtreue Pseudo-Elemente
Diese Pseudo-Elemente verhalten sich wie reguläre Elemente und fügen sich nahtlos in das Boxmodell ein. Sie wirken wie ein Kindelement, das direkt innerhalb der Hierarchie des ursprünglichen Elements gestylt werden kann.
::before-
Erstellt ein Pseudo-Element, das das erste Kind des ausgewählten Elements ist.
::after-
Erstellt ein Pseudo-Element, das das letzte Kind des ausgewählten Elements ist.
::column-
Jeder Spaltenabschnitt eines Mehrspaltenlayouts.
::marker-
Die automatisch generierte Markerbox eines Listenelements.
::backdrop-
Der Hintergrund des ursprünglichen Elements, das in der oberen Ebene gerendert wird.
-
Erzeugt eine Schaltfläche, die das Scrollen des Scroll-Containers steuern kann, auf den sie angewendet wird.
::scroll-marker-
Erstellt ein Pseudo-Element, das eine Scroll-Marke ist — eine Scrollziel-Schaltfläche für ihr ursprüngliches Element, das in einer Scroll-Markierungsgruppe verschachtelt ist.
::scroll-marker-group-
Generiert einen Container vor oder nach einem Scroll-Container, um die durch das Element oder seine Nachkommen erzeugten
::scroll-marker-Pseudo-Elemente zu beinhalten.
Elementgestützte Pseudo-Elemente
Diese Pseudo-Elemente sind echte Elemente, die anderweitig nicht auswählbar sind.
::details-content-
Der erweiterbare/zusammenklappbare Inhalt eines
<details>-Elements. ::part()-
Jedes Element innerhalb eines Schattenbaums, das ein passendes
partAttribut hat. ::slotted()-
Jedes Element, das in einen Slot innerhalb einer HTML-Vorlage eingefügt wird.
Formularbezogene Pseudo-Elemente
Die Pseudo-Elemente stehen in Zusammenhang mit Formularelementen.
::checkmark-
Zielt auf das Häkchen ab, das im aktuell ausgewählten
<option>-Element eines anpassbaren Auswahlelements platziert, um einen visuellen Hinweis darauf zu geben, welches ausgewählt ist. -
Die Schaltfläche eines
<input>vomtype="file". ::picker()-
Der Auswahl-Teil eines Elements, zum Beispiel der Dropdown-Picker eines anpassbaren Auswahlelements.
::picker-icon-
Das Auswahl-Symbol innerhalb von Formularelementen, die mit einem Symbol verbunden sind. Im Falle eines anpassbaren Auswahlelements wählt es den Pfeil aus, der nach unten zeigt, wenn die Auswahl geschlossen ist.
::placeholder-
Der Platzhaltertext in einem Eingabefeld.
Alphabetischer Index
Durch ein Set an CSS-Spezifikationen definierte Pseudo-Elemente umfassen die folgenden:
A
B
C
::column::checkmark::cue(und::cue())
D
F
G
H
M
P
S
T
V
Verschachtelte Pseudo-Elemente
Sie können einige Pseudo-Elemente miteinander verketten, um verschachtelte Pseudo-Elemente zu gestalten. Die folgenden verschachtelten Pseudo-Elementkombinationen werden unterstützt:
::after::after::marker: Wählt das::markerPseudo-Element eines::afterPseudo-Elements aus, wenn::afterals Listenelement gestaltet wird, mitdisplay: list-item.
::before::before::marker: Wählt das::markerPseudo-Element eines::beforePseudo-Elements aus, wenn::beforeals Listenelement gestaltet wird, mitdisplay: list-item.
Informieren Sie sich in den einzelnen Referenzseiten der Pseudo-Elemente über Beispiele und Informationen zur Browser-Kompatibilität.
Vererbung der Hervorhebungspseudo-Elemente
Hervorhebungspseudo-Elemente, wie ::selection, ::target-text, ::highlight(), ::spelling-error, und ::grammar-error, folgen einem konsistenten Vererbungsmodell, das sich von der regulären Elementvererbung unterscheidet.
Wenn Sie Stile auf Hervorhebungspseudo-Elemente anwenden, erben diese sowohl von:
- Ihren Elternelementen (entsprechend der normalen Vererbung).
- Den Hervorhebungspseudo-Elementen ihrer Elternelemente (entsprechend der Hervorhebungsvererbung).
Das bedeutet, dass, wenn Sie sowohl ein Elternelement mit einem Hervorhebungspseudo-Element als auch ein Kindelement mit einem Hervorhebungspseudo-Element gestalten, das hervorgehobene Kindtextinhalt beide Stileigenschaften kombiniert.
Hier ist ein konkretes Beispiel.
Zunächst haben wir etwas HTML, das zwei verschachtelte <div>-Elemente beinhaltet. Ein Teil des enthaltenen Textinhalts befindet sich direkt innerhalb des übergeordneten <div>, und ein Teil ist innerhalb des Kinder-<div> verschachtelt.
<div class="parent">
Parent text
<div class="child">Child text</div>
</div>
Als nächstes fügen wir etwas CSS hinzu, das die übergeordneten und die Kinder-<div>-Elemente separat auswählt und ihnen unterschiedliche color Werte gibt, sowie das ausgewählte ::selection-Pseudoelement des Elternteils und des Kindes. Dies verleiht jedem <div> eine andere background-color und setzt eine andere Textfarbe auf der Auswahl des Elternteils.
/* Style for the parent element */
.parent {
color: blue;
}
/* Style for the parent's selected text */
.parent::selection {
background-color: yellow;
color: red;
}
/* Style for the child element */
.child {
color: green;
}
/* Style for the child's selected text */
.child::selection {
background-color: orange;
}
Das Beispiel wird wie folgt gerendert:
Versuchen Sie, den Text sowohl in den Eltern- als auch in den Kind-Elementen auszuwählen. Beachten Sie, dass:
- Wenn Sie den Text des Elternteils auswählen, wird er mit dem gelben Hintergrund und der roten Textfarbe gerendert, das in
.parent::selectiondefiniert ist. - Wenn Sie den Text des Kindes auswählen, wird verwendet:
- Der orange Hintergrund von
.child::selection. - Die rote Textfarbe, die vom
::selection-Pseudo-Element des Elternteils geerbt wird.
- Der orange Hintergrund von
Dies zeigt, wie das Hervorhebungspseudo-Element des Kindes sowohl vom Elternelement als auch vom Hervorhebungspseudo-Element des Elternteils erbt.
CSS-Benutzerdefinierte Eigenschaften (Variablen) in Hervorhebungspseudo-Elementen erben von ihrem ursprünglichen Element (dem Element, auf das sie angewendet werden), nicht durch die Hervorhebungsvererbungskette. Zum Beispiel:
:root {
--selection-color: lightgreen;
}
::selection {
color: var(--selection-color);
}
.blue {
--selection-color: blue;
}
Wenn der universelle Selektor mit Hervorhebungspseudo-Elementen verwendet wird, verhindert er die Hervorhebungsvererbung. Zum Beispiel:
/* This prevents highlight inheritance */
*::selection {
color: lightgreen;
}
/* Prefer this to allow inheritance */
:root::selection {
color: lightgreen;
}
Spezifikationen
| Specification |
|---|
| CSS Pseudo-Elements Module Level 4> |
| CSS Positioned Layout Module Level 4> |
| CSS Shadow Parts> |
| WebVTT: The Web Video Text Tracks Format> |
Siehe auch
- CSS Pseudo-Elemente Modul
- Pseudoklassen
- CSS Selektoren Modul
- Lernen: Pseudoklassen und Pseudoelemente
- Änderungen der Vererbung für CSS-Auswahlstil - Detaillierte Erklärung der Änderungen des Vererbungsmodells von Hervorhebungspseudoelementen in Chrome 134