Экранные дикторы и первое правило ARIA
Первое правило ARIA велит обходиться без неё: если родной элемент HTML уже делает нужное, например button, используй его, а не добавляй роль к div.
С чем работает экранный диктор
Экранный диктор не читает пиксели. Браузер строит из HTML дерево доступности, упрощённую копию страницы, в которой у каждого важного элемента есть роль (кнопка, ссылка, заголовок, флажок), имя (текст, который его обозначает) и иногда состояние (отмечен, развёрнут, отключён). Экранный диктор читает это дерево вслух или передаёт его на брайлевский дисплей. Критерий успешного применения 4.1.2 «Название, роль, значение» уровня A в WCAG 2.2 требует, чтобы каждый элемент управления на странице сообщал эти три вещи.
Пользователи редко слушают страницу сверху донизу. Экранные дикторы, встроенные в основные операционные системы, и бесплатные, которые можно установить, позволяют вызвать список заголовков, ссылок или ориентиров, перейти к следующему полю формы или читать по одной строке. Вот почему прошлые уроки так важны: настоящие заголовки, подписанные поля, кнопки, которые действительно являются кнопками, и альтернативный текст прямо попадают в это дерево. Важен и атрибут lang у элемента html. Его требует критерий 3.1.1 «Язык страницы», и экранные дикторы по нему выбирают правильный голос и произношение.
Что добавляет ARIA
WAI-ARIA (Accessible Rich Internet Applications) является набором атрибутов, которые меняют то, что попадает в дерево доступности: role задаёт роль, атрибуты вроде aria-label задают имя, а такие, как aria-checked или aria-expanded, задают состояние. ARIA меняет только то, что объявляется. Она не делает элемент фокусируемым, не добавляет поведения клавиатуры и не меняет его вид. Руководство W3C ARIA Authoring Practices Guide выносит это в заголовок: «Лучше без ARIA, чем с плохой ARIA» (No ARIA is better than bad ARIA). Неправильная ARIA сообщает пользователю экранного диктора неправду о странице.
Правила использования ARIA
Документ W3C Using ARIA излагает короткие правила, которые цитируют повсюду (в феврале 2026 года он отмечен как прекращённый черновик, но сами правила не изменились). Правило 1: если можно использовать родной элемент или атрибут HTML, в котором нужный смысл и поведение уже встроены, используй его, а не переделывай другой элемент с помощью ARIA. Правило 2: не меняй родную семантику без крайней необходимости. Правило 3: каждым интерактивным элементом управления ARIA должно быть можно пользоваться с клавиатуры. Правило 4: не ставь role="presentation" или aria-hidden="true" на элемент, который может получить фокус, иначе некоторые пользователи попадут в «ничто».
А помогает ARIA там, где нужно закрыть пробелы, с которыми HTML не справляется. У кнопки, в которой только значок, нет текста, а значит, нет имени; aria-label="Close" даёт ей имя. Значок SVG рядом с видимым текстом служит украшением, и aria-hidden="true" на svg не пускает его в дерево. Это два атрибута, которые нужны большинству начинающих. Для целых виджетов, например вкладок или меню, следуй подходящему шаблону из Authoring Practices Guide, а не придумывай свой.
| Дерево доступности | Роли, имена и состояния, которые браузер строит из HTML |
| WCAG 4.1.2 | Название, роль, значение (A) |
| Первое правило ARIA | Используй родной элемент HTML, если он справляется |
| aria-label | Даёт элементу имя, например кнопке со значком |
| aria-hidden="true" | Убирает украшения из дерева; никогда на фокусируемых элементах |
| WCAG 3.1.1 | Язык страницы (A): lang у html |
- Экранные дикторы читают дерево доступности: роль, имя, состояние.
- ARIA меняет то, что объявляется, а не поведение или фокус.
- Правило 1: сначала родной HTML. Лучше без ARIA, чем с плохой ARIA.
- aria-label называет кнопки со значком; aria-hidden скрывает украшения.
- Что на самом деле читает экранный диктор?
- Дерево доступности, построенное из HTML
- Пиксели на экране
- Файл CSS
- Журнал сервера
- Какие три вещи, по 4.1.2, должен сообщать каждый элемент управления?
- Название, роль, значение
- Цвет, размер, положение
- Title, alt, lang
- Id, class, style
- Каково первое правило использования ARIA?
- Использовать родной элемент HTML, если он уже справляется
- Добавлять role каждому элементу
- Всегда использовать aria-label
- Прятать значки от всех
- Ты добавил role="button" к span. Что тебе ещё придётся добавить самому?
- Фокус и обработку Enter/Space
- Ничего
- Цвет
- Атрибут alt
- Какой заголовок есть в W3C Authoring Practices Guide?
- Лучше без ARIA, чем с плохой ARIA
- Всегда используй ARIA
- ARIA заменяет HTML
- ARIA нужна для оформления
- Какой атрибут ARIA даёт имя кнопке, в которой только значок?
- Где aria-hidden="true" не должен стоять никогда?
- На элементе, который может получить фокус
- На декоративном svg
- На фоновом изображении
- На разделителе
- В чём атрибут lang у html помогает экранному диктору?
- Выбрать правильный голос и произношение
- Найти заголовки
- Прочитать alt
- Изменить контраст
- Меняет ли ARIA вид элемента?
- Нет, только то, что объявляется
- Да, всегда
- Меняет только role
- Только в тёмной теме
- Пользователи экранного диктора чаще всего перемещаются по странице с помощью
- списков заголовков, ссылок и ориентиров
- чтения каждого слова сверху вниз
- увеличения
- печати
Источники курса (9)
- W3C, Web Content Accessibility Guidelines (WCAG) 2.2, W3C Recommendation first published 5 October 2023, current edition 12 December 2024 (w3.org/TR/WCAG22/, checked 2026-10-17, rechecked 2026-10-18)
- W3C WAI, What's new in WCAG 2.2 (w3.org/WAI/standards-guidelines/wcag/new-in-22/, checked 2026-10-17)
- W3C WAI, Images tutorial and alt decision tree (w3.org/WAI/tutorials/images/decision-tree/, checked 2026-10-17)
- W3C, Using ARIA (w3.org/TR/using-aria/, Discontinued Draft 24 February 2026, rules 1 to 4, checked 2026-10-17)
- W3C WAI-ARIA Authoring Practices Guide, Read Me First, "No ARIA is better than bad ARIA" (w3.org/WAI/ARIA/apg/practices/read-me-first/, checked 2026-10-17)
- MDN Web Docs, tabindex (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Global_attributes/tabindex, checked 2026-10-17)
- MDN, Heading elements, accessibility notes (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/Heading_Elements, checked 2026-10-17)
- MDN, autocomplete attribute (developer.mozilla.org/en-US/docs/Web/HTML/Reference/Attributes/autocomplete, checked 2026-10-17)
- Every code exercise was checked with a Playwright probe against a reference solution.
Проверено: 2026-10-17