:state()

Baseline 2024

Newly available

Since May 2024, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.

Die :state() CSS Pseudoklasse stimmt mit benutzerdefinierten Elementen überein, die den angegebenen benutzerdefinierten Zustand haben.

Syntax

Die :state() Pseudoklasse nimmt als Argument einen benutzerdefinierten Bezeichner, der den Zustand des zu betrachtenden benutzerdefinierten Elements repräsentiert.

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

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 über das Element fährt, oder ein Link kann sich im "visited"-Zustand befinden, nachdem ein Benutzer darauf geklickt hat. Elemente, die von Browsern bereitgestellt werden, 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 standardmäßigen Elementen abgeleitet sind) ihre Zustände offenlegen, sodass Seiten, die diese Elemente verwenden, sie mithilfe der CSS :state() Pseudoklasse gestalten können.

Die Zustände eines benutzerdefinierten Elements werden durch Zeichenfolgenwerte repräsentiert. Diese Werte werden zu einem CustomStateSet-Objekt hinzugefügt oder daraus entfernt, das mit dem Element verknüpft ist. Die CSS :state() Pseudoklasse stimmt mit einem Element überein, 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 anzugeben. Dies wird erreicht, indem :state() innerhalb der :host() Pseudoklasse verwendet wird, die einen Zustand nur innerhalb des Shadow DOM des aktuellen benutzerdefinierten Elements betrachtet.

Darüber hinaus ermöglicht das ::part() Pseudoelement gefolgt von der :state() Pseudoklasse das Zuordnen von Shadow-Teilen eines benutzerdefinierten Elements, die sich in einem bestimmten Zustand befinden. (Shadow-Teile sind Teile eines Shadow-Baums eines benutzerdefinierten Elements, die explizit einer enthaltenden Seite zur Stilgestaltung zugänglich gemacht werden.)

Beispiele

Übereinstimmung mit einem benutzerdefinierten Zustand

Dieser CSS-Code zeigt, wie der Rahmen 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;
}

Ein Live-Beispiel für diesen Code in Aktion finden Sie im Beispiel Übereinstimmung mit dem benutzerdefinierten Zustand eines benutzerdefinierten Checkbox-Elements auf der CustomStateSet-Seite.

Übereinstimmung mit einem benutzerdefinierten Zustand im Shadow DOM eines benutzerdefinierten Elements

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

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

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

Ein Live-Beispiel für diesen Code in Aktion finden Sie im Beispiel Übereinstimmung mit dem benutzerdefinierten Zustand eines benutzerdefinierten Checkbox-Elements auf der CustomStateSet-Seite.

Übereinstimmung mit einem benutzerdefinierten Zustand in einem Shadow-Teil

Dieses Beispiel zeigt, wie die :state() Pseudoklasse verwendet werden kann, um die Shadow-Teile eines benutzerdefinierten Elements anzusprechen.

Shadow-Teile werden mithilfe des part Attributs definiert und benannt. Betrachten Sie zum Beispiel ein benutzerdefiniertes Element namens <question-box>, das ein <labeled-checkbox> benutzerdefiniertes Element als Shadow-Teil namens checkbox verwendet:

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

Der folgende CSS-Code zeigt, wie das ::part() Pseudoelement verwendet werden kann, um den 'checkbox' Shadow-Teil zuzuordnen. Anschließend zeigt er, wie das ::part() Pseudoelement gefolgt von der :state() Pseudoklasse verwendet werden kann, um denselben Teil zuzuordnen, wenn er sich im checked-Zustand befindet.

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

question-box::part(checkbox):state(checked) {
  color: green;
}

Ein Live-Beispiel für diesen Code in Aktion finden Sie im Beispiel Übereinstimmung eines benutzerdefinierten Zustands in einem Shadow-Teil eines benutzerdefinierten Elements auf der CustomStateSet-Seite.

Spezifikationen

Specification
HTML Standard
# selector-custom

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch