Spec-Zone.ru › CSS

: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 125
90Используется штриховой идентификатор (например, :--foo) вместо :state().
125
90Используется штриховой идентификатор (например, :--foo) вместо :state().
126 111
76Используется штриховой идентификатор (например, :--foo) вместо :state().
17.4 125
90Используется штриховой идентификатор (например, :--foo) вместо :state().
126 83
64Используется штриховой идентификатор (например, :--foo) вместо :state().
17.4 27.0
15.0Используется штриховой идентификатор (например, :--foo) вместо :state().
125
90Используется штриховой идентификатор (например, :--foo) вместо :state().

См. также

  • CustomStateSet
  • Псевдоклассы
  • Псевдоклассы и псевдоэлементы
  • Пользовательские состояния и пользовательские псевдоклассы CSS селекторов в Использование пользовательских элементов

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API