HTML элементы, способные получать фокус: полный список
Быстрый ответ
Фокусируемые, или фокусабельные, элементы в HTML – это интерактивные компоненты, с которыми пользователь имеет возможность взаимодействовать. Список основных фокусабельных элементов включает:
<a href="">: Гиперссылки.<button>: Кнопки на веб-странице.<input>: Поля для ввода данных, за исключением скрытых(type="hidden").<select>: Раскрывающиеся списки для выбора опции.<textarea>: Большие текстовые области для ввода данных.<iframe>: Встроенные фреймы, например видеоплееры.
Любой элемент может получить свойство фокусабельности при помощи атрибута tabindex="0". Примером служит <div tabindex="0">, на который теперь можно переключаться с помощью клавиши Tab. Пользуйтесь tabindex ответственно, поскольку он влияет на доступность контента.

Подробнее о фокусе: с использованием jQuery
Давайте углубимся в детали и рассмотрим некоторые примечательные случаи, также обсудим, как правильно управлять фокусом подобно профессионалу.
Нестандартные фокусабельные элементы
<area>с атрибутомhrefиспользуется в качестве активных областей в изображениях.- Элементы с
contentEditable="true"позволяют пользователям редактировать их содержимое. - Еще элементы, которые сами по себе не предназначены для взаимодействия, могут стать фокусируемыми при помощи
tabindexилиcontentEditable.
Обеспечиваем видимость при фокусе
Переключение фокуса на элементы должно быть заметно:
/* Стандарт для веб-браузеров */
:focus-visible {
outline: 2px solid blue;
}
Плюсы и минусы использования tabindex
- Положительное значение
tabindexменяет порядок перехода между элементами, что может запутать пользователя. - Отрицательное значение
tabindex(например,tabindex="-1") делает элемент фокусируемым при использовании кода, но исключает его из порядка переключения клавишей Tab. - Стилизовать фокусируемые элементы можно с помощью CSS:
/* В центре внимания */
[tabindex]:not([tabindex^="-"]):not([disabled]) {
/* стили для фокусируемых элементов */
}
Активный фокус и расширенный уровень доступности
С использованием document.activeElement вы сможете определить, какой конкретно элемент в данный момент находится в фокусе. Создание доступного и логичного порядка переключения между элементами значительно упрощает работу с вашим сайтом.
Зависимость от браузера
В разных браузерах процесс управления фокусом может немного отличаться, поэтому важно проверять работу вашего сайта в разных средах, чтобы обеспечить пользователям комфортное взаимодействие.
Проверка фокуса и улучшение доступности
document.activeElementподскажет, какой элемент в текущий момент активен.- Логичный порядок переключения и явное выделение элемента в фокусе улучшают доступность сайта.
Визуализация
Воспринимайте HTML элементы как персонажей в театральной постановке (🎭):
- 🎭 Персонажи НА СЦЕНЕ (Фокусируемые):
– 👥 <input>, <button>, <select>, <textarea>
– 🎩 <a href="...">, <area href="..."> (с указанным "href")
– 🕴️ [tabindex]: Любой персонаж может стать заметнее благодаря `tabindex`
- 🎭 Персонажи ЗА КУЛИСАМИ (Не фокусируемые):
– 🖼️ <img>: Реквизит, если нет [tabindex] или [usemap]
– 🎬 <div>, <span>: Элементы сценария, пока не получат статус [tabindex]
Персонажи на сцене – доступны (фокусируются), те, что за кулисами, – ожидают свою очередь (не фокусируются).
Теория фокуса и его практическое применение
Управление фокусом в сложных веб-приложениях требует знания базовых принципов и практических навыков. Ниже приведены ключевые моменты, на которые стоит обратить внимание:
Использование JavaScript для контроля фокуса
- С помощью метода
HTMLElement.focus()можно направить фокус на конкретный элемент. - При обновлении содержимого страницы, учтите вопросы управления фокусом, чтобы пользователь не потерял активный элемент.
Мониторинг производительности
- Добавляя новые интерактивные элементы, убедитесь, что они могут получать фокус.
MutationObserverотслеживает изменения DOM и помогает управлять фокусом в ответ на эти изменения.
Инструменты и стилизация фокусируемых элементов
- SASS или LESS могут помочь в стилизации элементов, которые получают фокус.
- Если вы заботитесь о пользователе, чей компьютер чувствителен к смещению, используйте
@media (prefers-reduced-motion).
Полезные материалы
- WHATWG HTML Standard for sequential focus navigation – Описание последовательности перехода по элементам с фокусом и значению
tabindex. - WHATWG HTML Standard for focusable areas – Рекомендации для элементов, способных получить фокус.
- WebAIM: Keyboard accessibility – Tabindex – Использование
tabindexдля обеспечения доступности навигации с помощью клавиатуры. - How to Meet WCAG (Quick Reference) – Принципы создания видимой навигации через фокусируемые элементы.
- HTML5 Accessibility – Анализ поддержки HTML5 и элементов фокуса в различных браузерах.
- CSS-Tricks: :focus – Детали стилизации псевдоклассов :focus и :active.
- ARIA Guide to managing focus – Рекомендации по управлению фокусом в веб-приложениях с использованием ARIA.


