:state()
Baseline 2024
Доступно с недавнего времени
С мая 2024 года эта функция работает на последних версиях устройств и браузеров. Возможны проблемы с её работой на старых устройствах и браузерах.
Псевдокласс :state() CSS псевдокласса соответствует собственным элементам, имеющим указанное пользовательское состояние.
Синтаксис
Псевдокласс :state() принимает в качестве аргумента пользовательский идентификатор, представляющий состояние пользовательского элемента, которому нужно соответствовать.
:state(<custom identifier>) {
/* ... */
}
Описание
Элементы могут переходить между состояниями в результате взаимодействия пользователя и других факторов. Например, элемент может находиться в состоянии "наведение", когда пользователь наводит курсор на элемент, или ссылка может быть в состоянии "посещённая" после нажатия на неё пользователем. Элементы, предоставляемые браузерами, могут форматироваться на основе этих состояний с помощью псевдоклассов CSS, таких как :hover и :visited. Аналогично, автономные пользовательские элементы (пользовательские элементы, не производные от встроенных элементов) могут экспонировать свои состояния, что позволяет страницам, использующим эти элементы, форматировать их с помощью псевдокласса CSS :state().
Состояния пользовательского элемента представлены строковыми значениями. Эти значения добавляются или удаляются из объекта CustomStateSet, связанного с элементом. Псевдокласс CSS :state() соответствует элементу, когда идентификатор, переданный в качестве аргумента, присутствует в CustomStateSet элемента.
Псевдокласс :state() также может использоваться для сопоставления пользовательских состояний внутри реализации пользовательского элемента. Это достигается с помощью :state() внутри функции псевдокласса :host(), которая сопоставляет состояние только внутри домена тени текущего пользовательского элемента.
Кроме того, псевдоэлемент ::part(), за которым следует псевдокласс :state() позволяет сопоставлять части теней пользовательского элемента, которые находятся в определённом состоянии. (Части теней — это части дерева тени пользовательского элемента, которые явно экспонируются содержащей странице для целей форматирования.)
Примеры
Сопоставление пользовательского состояния
Этот CSS показывает, как изменить границу автономного пользовательского элемента <labeled-checkbox> на red при нахождении его в состоянии "выбрано".
labeled-checkbox {
border: dashed red;
}
labeled-checkbox:state(checked) {
border: solid;
}
Живой пример работы данного кода можно увидеть в примере Сопоставление пользовательского состояния пользовательского элемента-чекбокса на странице CustomStateSet.
Сопоставление пользовательского состояния в домене тени пользовательского элемента
Этот пример показывает, как псевдокласс :state() может использоваться внутри функции псевдокласса :host() для сопоставления пользовательских состояний внутри реализации пользовательского элемента.
Следующий CSS вставляет серую [x] перед элементом, когда он находится в состоянии "выбрано".
:host(:state(checked))::before {
content: "[x]";
}
Живой пример работы данного кода можно увидеть в примере Сопоставление пользовательского состояния пользовательского элемента-чекбокса на странице CustomStateSet.
Сопоставление пользовательского состояния в части тени
Этот пример показывает, как использовать псевдокласс :state() для определения частей теней пользовательского элемента.
Части теней определяются и именованны с помощью атрибута part. Например, рассмотрим пользовательский элемент с именем <question-box>, использующий пользовательский элемент <labeled-checkbox> в качестве части тени с именем checkbox:
shadowRoot.innerHTML = `<labeled-checkbox part='checkbox'>Yes</labeled-checkbox>`;
Следующий CSS показывает, как псевдоэлемент ::part() может использоваться для сопоставления с частью тени 'checkbox'. Затем он показывает, как псевдоэлемент ::part() с последующим псевдоклассом :state() может использоваться для сопоставления с той же частью, когда она находится в состоянии checked.
question-box::part(checkbox) {
color: red;
}
question-box::part(checkbox):state(checked) {
color: green;
}
Живой пример работы данного кода можно увидеть в примере Сопоставление пользовательского состояния в части тени пользовательского элемента на странице CustomStateSet.
Спецификации
| Спецификация |
|---|
| Стандарт HTML # selector-custom |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | |
:state |
12590Используется штриховой идентификатор (например,:--foo) вместо :state(). |
12590Используется штриховой идентификатор (например,:--foo) вместо :state(). |
126 | 11176Используется штриховой идентификатор (например,:--foo) вместо :state(). |
17.4 | 12590Используется штриховой идентификатор (например,:--foo) вместо :state(). |
126 | 8364Используется штриховой идентификатор (например,:--foo) вместо :state(). |
17.4 | 27.015.0Используется штриховой идентификатор (например,:--foo) вместо :state(). |
12590Используется штриховой идентификатор (например,:--foo) вместо :state(). |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/:state