CSS-справочникВ стандарте

CSS :defined — как работает

CSS :defined: принцип работы, корректный синтаксис, практический сценарий, ограничения, ошибки и актуальная совместимость.

Суть темы

У темы «:defined» есть конкретная роль в области «псевдоклассы». Псевдокласс :defined сопоставляет элемент с определённым состоянием или структурным условием. Для «:defined» в диалоге с возвратом фокуса после закрытия используйте размер содержащего блока в Layout и не добавляйте новую обёртку до объяснения её роли.

Практическое правило для :defined

Проверяя «:defined», соблюдайте правило: не полагайтесь только на hover и сохраняйте эквивалентное состояние клавиатурного фокуса. Для «:defined» изменяйте одно условие за запуск и фиксируйте фактический результат.

Синтаксис :defined

Минимальная запись «:defined» нужна для отделения самой возможности от стилей и разметки проекта. Проверьте фрагмент отдельно перед переносом.

css
.button:defined {
  outline: 2px solid #2563eb;
  outline-offset: 3px;
}
Открыть в Playground

Как работает :defined

Селектор пересчитывается браузером при изменении состояния или структуры DOM. Для «:defined» проверьте две контрольные точки — размер содержащего блока в Layout и изменение DOM в панели Elements: так видно, на каком этапе появляется итоговое поведение этой темы.

Проверка в проекте

  • Не полагайтесь только на hover и сохраняйте эквивалентное состояние клавиатурного фокуса; результат относится непосредственно к «:defined».
  • Проверить длинный текст, пустое значение и отсутствие необязательного ресурса при разборе «:defined».
  • Проверьте «:defined» в диалоге с возвратом фокуса после закрытия через размер содержащего блока в Layout и запишите наблюдаемое изменение.
Выбор конструкции

Используйте «:defined», когда требуется выбрать элемент по состоянию, положению или отношению к другим узлам; подтвердите выбор предметной проверкой: не полагайтесь только на hover и сохраняйте эквивалентное состояние клавиатурного фокуса. Для «:defined» более простой вариант предпочтителен, если он сохраняет тот же смысл и поведение.

Практика с :defined

Проверьте «:defined» в изолированном демо с длинным текстом, клавиатурным управлением и узким экраном. Отдельная проверка для «:defined»: не полагайтесь только на hover и сохраняйте эквивалентное состояние клавиатурного фокуса.

псевдоклассы:defined

Сценарий: в диалоге с возвратом фокуса после закрытия.

Ошибки при работе с :defined

01

Устойчивость

Состояние :defined не должно быть единственным способом увидеть важное действие или информацию — это предметный риск для «:defined».

02

Доступность

Скрытие фокуса без равноценной заметной замены при использовании «:defined».

03

Каскад

Зависимость результата от placeholder вместо постоянной подписи; для «:defined» проверьте это отдельно.

Поддержка :defined

Для «:defined» таблица собрана из закреплённой версии MDN Browser Compatibility Data. Указанная версия браузера показывает первое заявленное появление базовой поддержки «:defined»; окончательное решение принимайте по аудитории конкретного проекта.

Chromeс версии 54Edgeс версии 79Firefoxс версии 63Safariс версии 10

Спецификация: источник 1, источник 2.

Вопросы о :defined

Как понять, что «:defined» выбрано правильно?

«:defined» выбрано правильно, когда оно решает задачу «выбрать элемент по состоянию, положению или отношению к другим узлам», сохраняет результат в диалоге с возвратом фокуса после закрытия и проходит предметную проверку: не полагайтесь только на hover и сохраняйте эквивалентное состояние клавиатурного фокуса.

Нужен ли запасной вариант для «:defined»?

Запасной вариант для «:defined» нужен, если целевой браузер или режим не обеспечивает выбранное поведение. Без улучшения «:defined» должно сохранять смысл, содержимое и основное действие.

Спецификации и источники

Синтаксис и статус проверяются по HTML Living Standard, спецификациям CSS и MDN Browser Compatibility Data. Примеры и объяснения подготовлены для этого сервиса.