← Назад ко всем вопросам

В чём разница между Focus visibile и Focus within

1️⃣ Как кратко ответить

:focus-visible применяется к элементам, которые находятся в фокусе и требуют видимой индикации фокуса, например, при навигации с клавиатуры. :focus-within применяется к элементам, которые содержат в себе элемент с фокусом, позволяя стилизовать родительский элемент, когда его потомок в фокусе.

2️⃣ Подробное объяснение темы

В веб-разработке важно управлять состоянием фокуса элементов для улучшения доступности и пользовательского опыта. Псевдоклассы :focus-visible и :focus-within помогают в этом, но они имеют разные цели и применения.

:focus-visible

:focus-visible — это псевдокласс, который применяется к элементу, когда он находится в фокусе и требует видимой индикации фокуса. Это особенно полезно для улучшения доступности, так как позволяет показывать фокус только в тех случаях, когда это действительно необходимо, например, при навигации с клавиатуры.

Пример использования :focus-visible

button:focus-visible {
  outline: 2px solid blue;
}
  • button:focus-visible: Селектор применяется к кнопке, когда она находится в фокусе и требует видимой индикации.
  • outline: 2px solid blue;: Устанавливает синюю рамку вокруг кнопки, чтобы показать, что она в фокусе.

:focus-within

:focus-within — это псевдокласс, который применяется к элементу, если любой из его потомков находится в фокусе. Это позволяет стилизовать родительский элемент, когда его потомок получает фокус, что может быть полезно для создания более интуитивного интерфейса.

Пример использования :focus-within

.form-group:focus-within {
  background-color: #f0f8ff;
}
  • .form-group:focus-within: Селектор применяется к элементу с классом form-group, если любой из его потомков находится в фокусе.
  • background-color: #f0f8ff;: Изменяет цвет фона родительского элемента, чтобы указать, что один из его потомков в фокусе.

Зачем это нужно

  • Доступность: :focus-visible помогает улучшить доступность, показывая фокус только тогда, когда это необходимо, например, при использовании клавиатуры.
  • Улучшение UX: :focus-within позволяет создавать более интуитивные интерфейсы, визуально подчеркивая родительские элементы, когда их потомки в фокусе.

Применение

  • :focus-visible: Используется для элементов, которые должны показывать фокус только в определенных случаях, например, при навигации с клавиатуры.
  • :focus-within: Используется для стилизации родительских элементов, когда их потомки находятся в фокусе, что может быть полезно в формах или сложных интерфейсах.

Эти псевдоклассы помогают разработчикам создавать более доступные и удобные интерфейсы, улучшая взаимодействие пользователей с веб-страницами.

Тема: CSS
Стадия: Tech

🔒 Подпишись на бусти автора и стань Алигатором, чтобы получить полный доступ к функционалу сайта и отслеживать свой прогресс!

Твои заметки