практика разработки веб-сайтов и приложений, доступных для всех пользователей, включая людей с ограниченными возможностями
практика разработки веб-сайтов и приложений, доступных для всех пользователей, включая людей с ограниченными возможностями
каждый человек должен иметь равные возможности при использовании веба
в разных странах действуют законы, предписывающие соблюдение доступности
улучшенная доступность увеличивает аудиторию, улучшает SEO и снижает юридические риски
набор атрибутов, разработанных для улучшения доступности сложных веб-приложений
Например, <div role="tablist"> может понадобиться в случаях, когда
<button> и <nav> не решают задачу
Например, aria-expanded="true" помогает экранным дикторам понять, открыт ли
выпадающий список
Например, aria-live используется для уведомлений, которые появляются без обновления
страницы
например, <div role="button"> не обрабатывает нажатие Enter/Space, пока
разработчик сам не добавит это через JavaScript
Использование <button> предпочтительнее, чем
<div role="button">
определяет, как элемент воспринимается вспомогательными технологиями, такими как экранные дикторы
определяют основную структуру страницы
banner – верхний заголовок сайта
main – основной контент страницы
navigation – область навигации
complementary – дополнительный контент, связанный с основным
создают доступные пользовательские интерфейсы
button – кнопка.
link – ссылка.
menu – меню навигации.
tab, tabpanel, tablist – вкладки.
progressbar, slider, tree – сложные виджеты
группируют элементы
region – логически связанная область контента.
group – объединяет связанные элементы (например, радиокнопки)
описывают текущие характеристики элемента
aria-disabled="true" – элемент отключён
aria-expanded="true" – раскрыт ли элемент (например, выпадающее меню)
aria-hidden="true" – скрыт ли элемент для вспомогательных технологий
предоставляют дополнительную информацию
aria-label="Описание" – описание элемента для экранного диктора
aria-labelledby="id" – связывает элемент с другим, который его
описывает
aria-describedby="id" – предоставляет дополнительную информацию
автоматически сообщают пользователям о появлении нового контента
aria-live Определяет, как контент будет озвучиваться скринридером (polite,
assertive)
aria-relevant Что именно изменяется (например, additions, removals)
aria-atomic Сообщать ли весь контент целиком
<div
role="button"
tabindex="0"
onclick="alert('Clicked!')">
Click me
</div>
<button>Click me</button>
<button aria-pressed="false" onclick="toggleState(this)">Toggle</button>
<script>
function toggleState(btn) {
const pressed = btn.getAttribute("aria-pressed") === "true";
btn.setAttribute("aria-pressed", !pressed);
}
</script>
<div role="tablist">
<button role="tab" aria-selected="true">Tab 1</button>
<button role="tab" aria-selected="false">Tab 2</button>
</div>
<div role="dialog" aria-labelledby="modal-title" aria-hidden="true">
<h2 id="modal-title">Modal Window</h2>
<p>Content here...</p>
</div>