: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 passt zu benutzerdefinierten Elementen, die den angegebenen benutzerdefinierten Zustand haben.
Syntax
Die :state()
-Pseudo-Klasse nimmt als Argument einen benutzerdefinierten Bezeichner, der den Zustand des benutzerdefinierten Elements repräsentiert, das abgeglichen werden soll.
:state(<custom identifier>) {
/* ... */
}
Beschreibung
Elemente können aufgrund von Benutzerinteraktion und anderen Faktoren zwischen Zuständen wechseln. Ein Element kann beispielsweise im "hover"-Zustand sein, wenn ein Benutzer über das Element schwebt, 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 mit CSS-Pseudoklassen wie :hover
und :visited
gestylt werden. Ebenso können autonome benutzerdefinierte Elemente (benutzerdefinierte Elemente, die nicht von integrierten Elementen abgeleitet sind) ihre Zustände offenlegen, sodass Seiten, die die Elemente verwenden, diese mithilfe der CSS-:state()
-Pseudoklasse stylen können.
Die Zustände eines benutzerdefinierten Elements werden durch Zeichenfolgenwerte repräsentiert. Diese Werte werden einem CustomStateSet
-Objekt hinzugefügt oder daraus entfernt, das dem Element zugeordnet 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 abzugleichen. Dies wird erreicht, indem :state()
innerhalb der :host()
-Pseudoklassenfunktion verwendet wird, die einen Zustand nur innerhalb des Shadow DOM des aktuellen benutzerdefinierten Elements abgleicht.
Zudem ermöglicht die ::part()
-Pseudo-Elementfunktion, gefolgt von der :state()
-Pseudo-Klasse, das Abgleichen der Shadow-Parts eines benutzerdefinierten Elements, die sich in einem bestimmten Zustand befinden. (Shadow-Parts sind Teile eines benutzerdefinierten Element-Shadow-Baums, die explizit für das Styling einer enthaltenden Seite freigelegt werden.)
Beispiele
Anpassen eines benutzerdefinierten Zustandes
Dieses CSS zeigt, wie die Grenze des autonomen benutzerdefinierten Elements <labeled-checkbox>
auf rot
geändert wird, wenn es sich im "checked"-Zustand befindet.
labeled-checkbox {
border: dashed red;
}
labeled-checkbox:state(checked) {
border: solid;
}
Ein Live-Beispiel dieser Umsetzung finden Sie im Anpassen des benutzerdefinierten Zustands eines benutzerdefinierten Checkbox-Elements-Beispiel auf der CustomStateSet
-Seite.
Anpassen eines benutzerdefinierten Zustandes 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 abzugleichen.
Das folgende CSS fügt ein graues [x]
vor dem Element ein, wenn es sich im "checked"-Zustand befindet.
:host(:state(checked))::before {
content: "[x]";
}
Ein Live-Beispiel dieser Umsetzung finden Sie im Anpassen des benutzerdefinierten Zustands eines benutzerdefinierten Checkbox-Elements-Beispiel auf der CustomStateSet
-Seite.
Anpassen eines benutzerdefinierten Zustandes in einem Shadow-Part
Dieses Beispiel zeigt, wie die :state()
-Pseudoklasse verwendet werden kann, um auf die Shadow-Parts eines benutzerdefinierten Elements zu zielen.
Shadow-Parts werden mithilfe des part
-Attributs definiert und benannt. Beispielsweise betrachten Sie ein benutzerdefiniertes Element namens <question-box>
, das ein <labeled-checkbox>
-benutzerdefiniertes Element als Shadow-Part mit dem Namen checkbox
verwendet:
shadowRoot.innerHTML = `<labeled-checkbox part='checkbox'>Yes</labeled-checkbox>`;
Das CSS unten zeigt, wie das ::part()
-Pseudo-Element verwendet werden kann, um gegen den 'checkbox'
-Shadow-Part zu matchen. Es zeigt dann, wie das ::part()
-Pseudo-Element, gefolgt von der :state()
-Pseudo-Klasse, verwendet werden kann, um gegen denselben Part zu matchen, wenn er sich im checked
-Zustand befindet.
question-box::part(checkbox) {
color: red;
}
question-box::part(checkbox):state(checked) {
color: green;
}
Ein Live-Beispiel dieser Umsetzung finden Sie im Anpassen eines benutzerdefinierten Zustands in einem Shadow-Part eines benutzerdefinierten Elements-Beispiel auf der CustomStateSet
-Seite.
Spezifikationen
Specification |
---|
HTML Standard # selector-custom |
Browser-Kompatibilität
BCD tables only load in the browser