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

View in English Always switch to English

:state() CSS-Pseudoklasse

Baseline 2024
Neu verfügbar

Seit Mai 2024 funktioniert diese Funktion auf aktuellen Geräten und in aktuellen Browserversionen. Auf älteren Geräten oder in älteren Browsern funktioniert sie möglicherweise nicht.

Die :state() CSS-Pseudoklasse entspricht benutzerdefinierten Elementen, die den angegebenen benutzerdefinierten Zustand haben.

Syntax

css
:state(<custom identifier>) {
  /* ... */
}

Parameter

Die :state()-Pseudoklasse nimmt als Argument einen benutzerdefinierten Bezeichner, der den Zustand des zu überwachenden benutzerdefinierten Elements darstellt.

Beschreibung

Elemente können aufgrund von Benutzerinteraktionen und anderen Faktoren zwischen Zuständen wechseln. Zum Beispiel kann sich ein Element im "hover"-Zustand befinden, wenn ein Benutzer darüber fährt, oder ein Link kann im "visited"-Zustand sein, nachdem ein Benutzer darauf geklickt hat. Von Browsern bereitgestellte Elemente können basierend auf diesen Zuständen mithilfe von CSS-Pseudoklassen wie :hover und :visited gestaltet werden. Ebenso können autonome benutzerdefinierte Elemente (benutzerdefinierte Elemente, die nicht von eingebauten Elementen abgeleitet sind) ihre Zustände offenlegen, wodurch Seiten, die die Elemente verwenden, diese mithilfe der CSS-:state()-Pseudoklasse gestalten können.

Die Zustände eines benutzerdefinierten Elements werden durch Zeichenfolgenwerte dargestellt. Diese Werte werden zu einem CustomStateSet-Objekt hinzugefügt oder davon entfernt, das mit dem Element verknüpft ist. Die CSS-Pseudoklasse :state() entspricht einem Element, wenn der als Argument übergebene Bezeichner im CustomStateSet des Elements vorhanden ist.

Die :state()-Pseudoklasse kann auch verwendet werden, um benutzerdefinierte Zustände innerhalb der Implementierung eines benutzerdefinierten Elements zu überwachen. Dies wird erreicht, indem :state() innerhalb der :host()-Pseudoklassenfunktion verwendet wird, welche einen Zustand nur innerhalb des Shadow-DOM des aktuellen benutzerdefinierten Elements überwacht.

Zusätzlich ermöglicht das ::part()-Pseudo-Element zusammen mit der :state()-Pseudoklasse das Überwachen der Shadow-Parts eines benutzerdefinierten Elements, die sich in einem bestimmten Zustand befinden. (Shadow-Parts sind Teile eines benutzerdefinierten Elements im Shadow-Baum, die explizit zur Gestaltung auf einer umgebenden Seite freigelegt werden.)

Beispiele

Überwachen eines benutzerdefinierten Zustands

Dieses CSS zeigt, wie der Rand des autonomen benutzerdefinierten Elements <labeled-checkbox> auf rot geändert wird, wenn es sich im "checked"-Zustand befindet.

css
labeled-checkbox {
  border: dashed red;
}
labeled-checkbox:state(checked) {
  border: solid;
}

Für ein Live-Beispiel dieser funktionierenden Code, siehe das Matching the custom state of a custom checkbox element-Beispiel auf der CustomStateSet-Seite.

Überwachen eines benutzerdefinierten Zustands im Shadow-DOM eines benutzerdefinierten Elements

Dieses Beispiel zeigt, wie die :state()-Pseudoklasse innerhalb der :host()-Pseudoklassenfunktion verwendet werden kann, um benutzerdefinierte Zustände innerhalb der Implementierung eines benutzerdefinierten Elements zu überwachen.

Das folgende CSS fügt dem Element ein graues [x] hinzu, wenn es sich im "checked"-Zustand befindet.

css
:host(:state(checked))::before {
  content: "[x]";
}

Für ein Live-Beispiel dieses funktionierenden Codes, siehe das Matching the custom state of a custom checkbox element-Beispiel auf der CustomStateSet-Seite.

Überwachen eines benutzerdefinierten Zustands in einem Shadow-Part

Dieses Beispiel zeigt, wie die :state()-Pseudoklasse verwendet werden kann, um die Shadow-Parts eines benutzerdefinierten Elements zu überwachen.

Shadow-Parts werden mithilfe des part-Attributs definiert und benannt. Beispielsweise betrachten Sie ein benutzerdefiniertes Element namens <question-box>, das ein benutzerdefiniertes Element <labeled-checkbox> als ein Shadow-Part namens checkbox verwendet:

js
shadowRoot.innerHTML = `<labeled-checkbox part='checkbox'>Yes</labeled-checkbox>`;

Das folgende CSS zeigt, wie das ::part()-Pseudoelement verwendet werden kann, um das 'checkbox'-Shadow-Part zu überwachen. Es zeigt auch, wie das ::part()-Pseudoelement, gefolgt von der :state()-Pseudoklasse, verwendet werden kann, um das gleiche Part zu überwachen, wenn es im checked-Zustand ist.

css
question-box::part(checkbox) {
  color: red;
}

question-box::part(checkbox):state(checked) {
  color: green;
  outline: dashed 1px green;
}

Für ein Live-Beispiel dieses funktionierenden Codes, siehe das Matching a custom state in a shadow part of a custom element-Beispiel auf der CustomStateSet-Seite.

Spezifikationen

Spezifikation
HTML
# selector-custom

Browser-Kompatibilität

Siehe auch