Pseudo-Elemente
Ein CSS Pseudo-Element ist ein Schlüsselwort, das zu einem Selektor hinzugefügt wird, um einen bestimmten Teil des ausgewählten Elements oder der ausgewählten Elemente zu stylen.
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 Pseudo-Klassen, die einen einzelnen Doppelpunkt (:
) in ihrer Notation verwenden. Beachten Sie, dass Browser aufgrund der Unterstützung der einfachen Doppelpunktsyntax für die ursprünglichen vier Pseudo-Elemente ::before
, ::after
, ::first-line
und ::first-letter
die einfache Doppelpunktsyntax unterstützen.
Pseudo-Elemente existieren nicht unabhängig. Das Element, von dem ein Pseudo-Element ein Teil ist, wird als 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, jedoch 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 aus, wenn der Absatz selbst gehovt wird (Pseudo-Klasse).
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 Symbol auf der ersten Zeile des ursprünglichen Elements.
::cue
-
Die WebVTT Cues innerhalb eines ausgewählten Elements. Dies kann verwendet werden, um Untertitel und andere Cues zu stylen in Medien mit VTT-Tracks. Das CSS Pseudo-Elemente Modul definiert ebenfalls die
::postfix
und::prefix
Sub-Pseudo-Elemente. Diese werden derzeit von keinem Browser unterstützt.
Hervorhebungs-Pseudo-Elemente
Wählen Sie Dokumentabschnitte basierend auf dem Inhalt und Dokumentstatus aus, um diese Bereiche anders zu stylen, um diesen Status dem Benutzer anzuzeigen.
::selection
-
Der Teil eines Dokuments, der ausgewählt wurde.
::target-text
-
Das Zieldokumentelement. Das Zieldokumentelement wird mit dem Fragment-Identifikator der URL identifiziert.
::spelling-error
-
Ein Textabschnitt, den der Browser als falsch geschrieben ansieht.
::grammar-error
-
Ein Textabschnitt, den der Browser als grammatikalisch inkorrekt ansieht.
::highlight()
-
Die Elemente im Highlight-Register. Es wird verwendet, um benutzerdefinierte Hervorhebungen zu erstellen.
Baumkonforme Pseudo-Elemente
Diese Pseudo-Elemente verhalten sich wie reguläre Elemente, indem sie nahtlos innerhalb des Box-Modells passen. Sie wirken als Kindelement, das direkt innerhalb der Hierarchie des ursprünglichen Elements gestylt werden kann.
::before
-
Erstellt ein Pseudo-Element, das das erste Kindelement des ausgewählten Elementes ist.
::after
-
Erstellt ein Pseudo-Element, das das letzte Kindelement des ausgewählten Elementes ist.
::column
-
Jedes Spaltenfragment eines Mehrspaltenlayouts.
::marker
-
Die automatisch generierte Markierungsbox eines Listenelements.
::backdrop
-
Der Hintergrund des ursprünglichen Elements, das im Top-Layer gerendert wird.
-
Erstellt eine Schaltfläche, die das Scrollen des Scroll-Containers steuern kann, auf den es angewendet wurde.
::scroll-marker
-
Erstellt ein Pseudo-Element, das ein Scroll-Marker ist – eine Scroll-Zielschaltfläche für sein ursprüngliches Element, das in einer Scroll-Marker-Gruppe verschachtelt ist.
::scroll-marker-group
-
Generiert einen Container vor einem Scroll-Container, um die
::scroll-marker
Pseudo-Elemente zu enthalten, die auf dem Element oder seinen Nachfahren generiert werden.
Elemente-gestützte Pseudo-Elemente
Diese Pseudo-Elemente sind reale Elemente, die sonst nicht auswählbar sind.
::details-content
-
Die ausklappbaren/in collaps-Möglichkeiten-Inhalte eines
<details>
Elements. ::part()
-
Jedes Element innerhalb eines Shadow Tree, das ein übereinstimmendes
part
Attribut hat. ::slotted()
-
Jedes Element, das in einen Slot innerhalb eines HTML-Templates eingefügt wird.
Formularbezogene Pseudo-Elemente
Die Pseudo-Elemente beziehen sich auf Formularelemente.
::checkmark
-
Zielt auf das Häkchen ab, das innerhalb des aktuell ausgewählten
<option>
Elements eines anpassbaren Auswahlelements platziert ist, um einen visuellen Hinweis darauf zu geben, welches ausgewählt ist. -
Die Schaltfläche eines
<input>
vontype="file"
. ::picker()
-
Der Auswahlteil eines Elements, zum Beispiel der Dropdown-Auswahl eines anpassbaren Auswahlelements.
::picker-icon
-
Das Auswahl-Symbol innerhalb von Formularelementen, denen ein Symbol zugewiesen ist. Im Falle eines anpassbaren Auswahlelements wählt es den Pfeil, der nach unten zeigt, wenn das Auswahlfeld geschlossen ist.
::placeholder
-
Der Platzhaltertext in einem Eingabefeld.
Alphabetischer Index
Pseudo-Elemente, die durch eine Reihe von CSS-Spezifikationen definiert sind, umfassen Folgendes:
A
B
C
::column
::checkmark
::cue
(und::cue()
)
D
F
G
H
M
P
S
T
V
Verschachtelung von Pseudo-Elementen
Sie können einige Pseudo-Element-Selektoren zusammenketten, um gestylte Pseudo-Elemente zu erstellen, die in andere Pseudo-Elemente verschachtelt sind. Die folgenden Kombinationen von verschachtelten Pseudo-Elementen werden unterstützt:
::after
::after::marker
: Wählt das::marker
Pseudo-Element eines::after
Pseudo-Elements aus, wenn::after
als Listenelement, mitdisplay: list-item
, gestylt ist.
::before
::before::marker
: Wählt das::marker
Pseudo-Element eines::before
Pseudo-Elements aus, wenn::before
als Listenelement, mitdisplay: list-item
, gestylt ist.
Besuchen Sie die Referenzseiten zu den einzelnen Pseudo-Elementen für Beispiele und Informationen zur Browser-Kompatibilität.
Vererbung von Hervorhebungs-Pseudo-Elementen
Hervorhebungs-Pseudo-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 Hervorhebungs-Pseudo-Elemente anwenden, erben sie von sowohl:
- Ihren Elternelementen (gemäß der normalen Vererbung).
- Den Hervorhebungs-Pseudo-Elementen ihrer Elternelemente (gemäß der Hervorhebungsvererbung).
Das bedeutet, dass wenn Sie sowohl ein Elternelement als auch ein Kindelement mit einem Hervorhebungs-Pseudo-Element stylen, der hervorgehobene Text des Kindelements Eigenschaften aus beiden Quellen kombiniert.
Hier ist ein konkretes Beispiel.
Zuerst haben wir einige HTML-Inhalte, die zwei verschachtelte <div>
Elemente umfassen. Einige der eingeschlossenen Textinhalte befinden sich direkt im übergeordneten <div>
, und einige sind im untergeordneten <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 untergeordneten <div>
Elemente separat auswählt und ihnen unterschiedliche color
Werte gibt, und das ausgewählte Textstück der übergeordneten und untergeordneten Elemente (::selection
) auswählt. Dies gibt jedem <div>
eine andere background-color
und setzt eine andere Textfarbe color
auf der Elternelementauswahl.
/* 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 folgendermaßen dargestellt:
Versuchen Sie, den Text in beiden Elementen auszuwählen. Beachten Sie, dass:
- Wenn Sie den übergeordneten Text auswählen, er den gelben Hintergrund und die rote Textfarbe verwendet, die in
.parent::selection
definiert sind. - Wenn Sie den untergeordneten Text auswählen, es verwendet:
- Den orangefarbenen Hintergrund von
.child::selection
. - Die rote Textfarbe, die von dem
::selection
Pseudo-Element des übergeordneten Elements geerbt wird.
- Den orangefarbenen Hintergrund von
Dies demonstriert, wie das Hervorhebungs-Pseudo-Element des Kindelements sowohl vom Elternelement als auch vom Hervorhebungs-Pseudo-Element des Elternelements erbt.
CSS Custom Properties (Variablen) in Hervorhebungs-Pseudo-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 Sie mit dem universellen Selektor mit Hervorhebungs-Pseudo-Elementen arbeiten, verhindert dies 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
- Pseudo-Klassen
- CSS Selektoren Modul
- Lernen: Pseudo-Klassen und Pseudo-Elemente
- Änderungen der Vererbung für CSS-Auswahl-Styling - Detaillierte Erklärung der Modelländerungen bei der Hervorhebungsvererbung in Chrome 134