Pseudo-Elemente
Ein CSS Pseudo-Element ist ein Schlüsselwort, das zu einem Selektor hinzugefügt wird und es Ihnen ermöglicht, einen bestimmten Teil des ausgewählten Elements(s) zu stylen.
Hinweis: Diese Seite ist ein Index aller Pseudo-Elemente in CSS. Die Seite CSS Pseudo-Elemente führt das Modul ein, das einige, aber nicht alle dieser Pseudo-Elemente definiert.
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;
}
Doppelpunkte (::) werden für Pseudo-Elemente verwendet. Dies unterscheidet Pseudo-Elemente von Pseudo-Klassen, die in ihrer Notation einen einfachen Doppelpunkt (:) verwenden. Beachten Sie, dass Browser die Einfachkolonsyntax 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 ausgehendes Element bezeichnet. Ein Pseudo-Element muss nach allen anderen Komponenten im komplexen oder zusammengesetzten Selektor erscheinen. Das letzte Element im Selektor ist das ausgehende 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. Also ist p::first-line > * ungültig.
Ein Pseudo-Element kann basierend auf dem aktuellen Zustand des ausgehenden Elements ausgewählt werden. Zum Beispiel wählt p:hover::first-line die erste Zeile (Pseudo-Element) eines Absatzes aus, wenn der Absatz selbst gerade überfahren 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 Zeilen-Box des ausgehenden Elements.
::first-letter-
Der erste Buchstabe, die Zahl oder das Symbolzeichen in der ersten Zeile seines ausgehenden 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 außerdem die
::postfixund::prefixSub-Pseudo-Elemente. Diese werden von keinem Browser unterstützt.
Highlight Pseudo-Elemente
Selektiert Dokumentabschnitte basierend auf Inhalt und Dokumentstatus und ermöglicht es, diese Bereiche unterschiedlich zu stylen, um diesen Status dem Nutzer anzuzeigen.
::selection-
Der Teil eines Dokuments, der ausgewählt wurde.
::target-text-
Das Ziel-Element des Dokuments. Das Ziel-Element wird mithilfe des Fragment-Identifiers der URL identifiziert.
::spelling-error-
Ein Textabschnitt, den der Browser für falsch geschrieben hält.
::grammar-error-
Ein Textabschnitt, den der Browser für grammatikalisch falsch hält.
::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, die sich nahtlos in das Box-Modell einfügen. Sie agieren als Kindelement, das direkt innerhalb der Hierarchie des ausgehenden 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-
Jedes Spaltenfragment eines Mehrspaltenlayouts.
::marker-
Die automatisch generierte Marker-Box eines Listenelements.
::backdrop-
Der Hintergrund des ausgehenden Elements, dargestellt in der oberen Schicht.
-
Erstellt einen Button, der das Scrollen des Scroll-Containers steuert, auf den er angewendet wird.
::scroll-marker-
Erstellt ein Pseudo-Element, das ein Scroll-Marker ist — ein Scroll-Ziel-Button für sein ausgehendes Element, das in einer Scroll-Marker-Gruppe verschachtelt ist.
::scroll-marker-group-
Generiert einen Container vor oder nach einem Scroll-Container, um die von dem Element oder seinen Nachfahren generierten
::scroll-markerPseudo-Elemente zu enthalten.
Elementgestützte Pseudo-Elemente
Diese Pseudo-Elemente sind echte Elemente, die sonst nicht auswählbar sind.
::details-content-
Die ein- und ausblendbaren Inhalte eines
<details>Elements. ::part()-
Jedes Element innerhalb eines Shadow-Baums, das ein passendes
partAttribut hat. ::slotted()-
Jedes Element, das in einem Slot innerhalb einer HTML-Vorlage platziert ist.
Formularbezogene Pseudo-Elemente
Die Pseudo-Elemente sind mit Formularelementen verbunden.
::checkmark-
Zielt auf das Häkchen im derzeit ausgewählten
<option>-Element eines anpassbaren Auswahlelements, um eine visuelle Anzeige des ausgewählten Elements zu bieten. -
Der Button eines
<input>vomtype="file". ::picker()-
Der Auswahlteil eines Elements, zum Beispiel der Drop-Down-Auswähler eines anpassbaren Auswahlelements.
::picker-icon-
Das Auswahl-Icon innerhalb der Formularelemente, die ein zugeordnetes Symbol haben. Im Fall 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
Pseudo-Elemente, die durch eine Reihe von CSS-Spezifikationen definiert sind, umfassen die folgenden:
A
B
C
::column::checkmark::cue(und::cue())
D
F
G
H
M
P
S
T
V
Nicht-standardisierte Pseudo-Elemente
Nicht-standardisierte, mit Anbieter-Präfix versehenen Pseudo-Elemente umfassen:
-moz- Präfix
::-moz-color-swatch::-moz-focus-inner::-moz-list-bullet::-moz-list-number::-moz-meter-bar::-moz-progress-bar::-moz-range-progress::-moz-range-thumb::-moz-range-track
-webkit- Präfix
::-webkit-inner-spin-button::-webkit-meter-bar::-webkit-meter-even-less-good-value::-webkit-meter-inner-element::-webkit-meter-optimum-value::-webkit-meter-suboptimum-value::-webkit-progress-bar::-webkit-progress-inner-element::-webkit-progress-value::-webkit-scrollbar::-webkit-search-cancel-button::-webkit-search-results-button::-webkit-slider-runnable-track::-webkit-slider-thumb
Pseudo-Elemente verschachteln
Sie können einige Pseudo-Elemente-Selektoren zusammen verketten, um Pseudo-Elemente zu stylen, die innerhalb anderer Pseudo-Elemente verschachtelt sind. Die folgenden verschachtelten Pseudo-Element-Kombinationen werden unterstützt:
::after::after::marker: Wählt das::markerPseudo-Element eines::afterPseudo-Elements aus, wenn::afterals Listenelement gestylt ist, mitdisplay: list-item.
::before::before::marker: Wählt das::markerPseudo-Element eines::beforePseudo-Elements aus, wenn::beforeals Listenelement gestylt ist, mitdisplay: list-item.
Sehen Sie sich die einzelnen Referenzseiten der Pseudo-Elemente für Beispiele und Informationen zur Browser-Kompatibilität an.
Highlight-Pseudo-Elemente Vererbung
Highlight 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 Highlight Pseudo-Elemente anwenden, erben sie von sowohl:
- Ihren Elternelementen (gemäß normaler Vererbung).
- Den Highlight Pseudo-Elementen ihrer Elternelemente (gemäß Highlight Vererbung).
Das bedeutet, dass, wenn Sie sowohl ein Highlight Pseudo-Element eines Elternelements als auch das eines Kindelements stylen, der Text des Kindelements hervorgehoben wird, indem Eigenschaften aus beiden Quellen kombiniert werden.
Hier ist ein konkretes Beispiel.
Zuerst haben wir etwas HTML, das zwei verschachtelte <div> Elemente enthält. Ein Teil des enthaltenen Textinhalts befindet sich direkt innerhalb des Elternelements <div>, und ein Teil ist innerhalb des Kindelements <div> verschachtelt.
<div class="parent">
Parent text
<div class="child">Child text</div>
</div>
Anschließend fügen wir etwas CSS hinzu, das die übergeordneten und untergeordneten <div> Elemente separat auswählt und ihnen unterschiedliche color Werte gibt, und wählt den ausgewählten Text des Eltern- und Kindelements (::selection). Dies gibt jedem <div> eine andere background-color und setzt eine andere Textfarbe auf der Elternauswahl.
/* 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 in beiden Elementen, Eltern- und Kindelemente, auszuwählen. Beachten Sie, dass:
- Wenn Sie den Text des Elternelements auswählen, wird der gelbe Hintergrund und die rote Textfarbe verwendet, die in
.parent::selectiondefiniert sind. - Wenn Sie den Text des Kindelements auswählen, wird verwendet:
- Der orange Hintergrund von
.child::selection. - Die rote Textfarbe, die vom
::selectionPseudo-Element des Elternteils geerbt wird.
- Der orange Hintergrund von
Dies zeigt, wie das Highlight Pseudo-Element des Kindelements sowohl von seinem Elternteil als auch vom Highlight Pseudo-Element des Elternteils erbt.
CSS benutzerdefinierte Eigenschaften (Variablen) in Highlight Pseudo-Elementen erben von ihrem ausgehenden Element (dem Element, auf das sie angewendet werden), nicht durch die Highlight-Vererbungskette. Zum Beispiel:
:root {
--selection-color: lightgreen;
}
::selection {
color: var(--selection-color);
}
.blue {
--selection-color: blue;
}
Bei der Verwendung des universellen Selektors mit Highlight Pseudo-Elementen wird die Highlight-Vererbung verhindert. 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
- Vererbungsänderungen für CSS-Auswahl-Styling - Detaillierte Erklärung der Highlight Pseudo-Element-Vererbungsmodelländerungen in Chrome 134