Инертный атрибут

Эмма Тверски
Emma Twersky

Атрибут inert — это глобальный атрибут HTML, который упрощает удаление и восстановление событий пользовательского ввода для элемента, включая события фокуса и события от вспомогательных технологий.

Поддержка браузера

  • 102
  • 102
  • 112
  • 15,5

Источник

Inert — это поведение по умолчанию в элементах диалога , например, когда вы используете showModal , чтобы открыть диалоговое окно, в котором пользователи могут сделать выбор, а затем закрыть его с экрана. После открытия <dialog> остальная часть страницы становится инертной, например, вы больше не можете щелкнуть ссылку или перейти на нее с помощью табуляции.

Вы можете использовать атрибут inert для достижения такого же поведения на других элементах.

Инертность означает отсутствие возможности двигаться, поэтому, когда вы отмечаете что-то инертное, вы удаляете движение или взаимодействие из этих элементов DOM.

<div>
  <label for="button1">Button 1</label>
  <button id="button1">I am not inert</button>
</div>
<div inert>
  <label for="button2">Button 2</label>
  <button id="button2">I am inert</button>
</div>

Здесь inert объявлен для второго элемента <div> , содержащего button2 , поэтому весь контент, содержащийся в этом <div> , включая кнопку и метку, не может получить фокус или на него невозможно щелкнуть.

Атрибут inert особенно полезен для обеспечения доступности, в частности, для предотвращения захвата фокуса.

Лучшая доступность

Рекомендации по обеспечению доступности веб-контента требуют управления фокусом и разумного и удобного порядка фокуса . Это включает в себя как открываемость, так и интерактивность. Раньше возможность обнаружения можно было подавить с помощью aria-hidden="true" , ​​но интерактивность сделать сложнее.

inert дает разработчикам возможность удалить элемент из порядка табуляции и из дерева доступности. Это позволяет вам контролировать как возможность обнаружения, так и интерактивность, а также дает возможность создавать более удобные и доступные шаблоны.

Существует два основных варианта применения inert к элементу для обеспечения лучшей доступности:

  • Когда элемент является частью дерева DOM, но находится за кадром или скрыт.
  • Когда элемент является частью дерева DOM, но должен быть неинтерактивным.

Заэкранные или скрытые элементы DOM

Одна из распространенных проблем доступности связана с такими элементами, как ящик, которые добавляют в DOM элементы, которые не всегда видны пользователю. С помощью inert вы можете гарантировать, что, хотя подэлементы ящика находятся за пределами экрана, пользователь клавиатуры не сможет случайно с ним взаимодействовать.

Неинтерактивные элементы DOM

Другая распространенная проблема доступности — это когда дизайн пользовательского интерфейса виден или частично виден, но явно неинтерактивен. Это может произойти, например, во время загрузки страницы, во время отправки формы или при открытом наложенном диалоговом ��кне.

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

Захват фокуса

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

Используя inert , вы можете гарантировать, что доступен только тот контент, который можно обнаружить. Это полезно для:

  • Блокирующие элементы, такие как модальное диалоговое окно, меню захвата фокуса или боковая навигация.
  • Карусель с неактивными элементами.
  • Неприменимое содержимое формы (например, затухание и отключение полей «Адрес доставки» при установленном флажке «То же, что и адрес выставления счета»).
  • Отключение всего пользовательского интерфейса в несогласованном состоянии.

Визуально обозначьте inert элементы

По умолчанию визуальная индикация инертности поддерева отсутствует. Рекомендуется четко обозначить, какие части DOM активны, а какие инертны.

[inert], [inert] * {
  opacity: 0.5;
  pointer-events: none;
  cursor: default;
  user-select: none;
}

Не все пользователи могут видеть все части страницы одновременно. Например, пользователи программ чтения с экрана, небольших устройств или луп и даже пользователи, просто использующие особенно маленькие окна, могут не видеть активную часть страницы и могут расстраиваться, если инертные разделы не являются явно инертными. Для отдельных элементов управления атрибут Disabled, вероятно, более уместен.

Какие взаимодействия и движения заблокированы?

По умолчанию inert блоки фокуса и событий щелчка. Для вспомогательных технологий это также блокирует вкладку и возможность обнаружения. Браузер также может игнорировать поиск по странице и выделение текста в элементе.

Значение inert по умолчанию — false .