0Pricing
HTML Academy · Урок

Когда использовать ARIA вместо встроенного HTML

Следуйте первому правилу ARIA: отдавайте предпочтение встроенной семантике

«Когда использовать ARIA вместо встроенного HTML» — бесплатный урок HTML Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения HTML Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс HTML Academy содержит 4 уроков всего.

Что такое ARIA?

ARIA (доступные расширенные интернет-приложения) — это набор атрибутов, которые можно добавлять в HTML для улучшения доступности для вспомогательных технологий. ARIA восполняет пробелы, когда встроенной семантики HTML недостаточно.

Первое правило ARIA

Самое важное правило ARIA: не используйте ARIA, если это можно сделать с помощью встроенного HTML:

<!-- BAD: ARIA on a div -->
<div role="button" tabindex="0" onclick="submit()">Submit</div>

<!-- GOOD: use a real button -->
<button type="submit">Submit</button>

<!-- Native HTML elements:
  - Are keyboard accessible by default
  - Have correct semantics built in
  - Work in more contexts
  - Require less code
-->

Когда встроенного HTML недостаточно

ARIA необходима, когда:

  • Для пользовательских компонентов интерфейса нет эквивалента в HTML (вкладки, поля с возможностью выбора)
  • Необходимо переопределить роль встроенного элемента
  • Нужно объявлять об обновлениях динамического содержимого
  • Необходимо явно описать сложные связи между элементами

ARIA не добавляет функциональность

Критически важно понимать: ARIA добавляет метаданные доступности, но не добавляет функциональность:

<!-- Adding role="button" to a div does NOT:
  - Make it keyboard-focusable (add tabindex="0")
  - Make Enter/Space activate it (add event listeners)
  - Make it styled like a button (add CSS)
-->

<!-- You must implement ALL behavior yourself -->
<!-- Native <button> handles all this for free -->

Классификация ARIA

ARIA включает три категории атрибутов:

  • Роли — определяют, чем является элемент: role="button", role="dialog"
  • Свойства — описывают статические характеристики: aria-label, aria-required
  • Состояния — описывают динамические условия: aria-expanded, aria-checked

Семантический HTML и аналоги ARIA

Большинство HTML-элементов уже имеют неявные роли ARIA:

<nav>   ≡  role="navigation"
<main>  ≡  role="main"
<aside> ≡  role="complementary"
<header> ≡ role="banner" (page-level)
<footer> ≡ role="contentinfo" (page-level)
<button> ≡ role="button"
<a href> ≡ role="link"
<h1-h6> ≡ role="heading"
<ul>    ≡  role="list"

Распространённые допустимые способы использования ARIA

Примеры корректного использования ARIA:

<!-- 1. Custom dropdown (no native equivalent): -->
<div role="combobox" aria-expanded="false">...</div>

<!-- 2. Loading state announcement: -->
<div role="status" aria-live="polite">Loading results...</div>

<!-- 3. Override landmark label: -->
<nav aria-label="Primary navigation">...</nav>

<!-- 4. Associate error with input: -->
<input aria-describedby="error-msg">
<span id="error-msg" role="alert">Invalid email</span>

Недопустимое использование ARIA

Распространённые ошибки при использовании ARIA:

<!-- BAD: ARIA role contradicts the element -->
<h2 role="button">Heading</h2>  <!-- don't turn a heading into a button -->

<!-- BAD: ARIA on an unsupported element -->
<div role="listitem">Item</div>  <!-- listitem must be inside list role -->

<!-- BAD: ARIA where HTML works fine -->
<p role="paragraph">Text</p>  <!-- p already has paragraph semantics -->

<!-- BAD: aria-label on hidden element -->
<span aria-hidden="true" aria-label="something">  <!-- contradictory -->

Роли ориентиров

Роли ориентиров ARIA помогают пользователям программ чтения с экрана перемещаться между областями страницы:

<div role="banner">     <!-- header for the whole page -->
<div role="navigation">  <!-- major navigation -->
<div role="main">        <!-- main content -->
<div role="complementary"> <!-- aside content -->
<div role="contentinfo"> <!-- page footer -->
<div role="search">      <!-- search form -->
<div role="form">        <!-- form with label -->

<!-- These are ONLY needed if using divs instead of semantic elements -->
<!-- Prefer the native HTML elements instead -->

Проверка реализации ARIA

Как проверить правильность ARIA:

  • Используйте панель специальных возможностей в DevTools Chrome или Firefox
  • Послушайте с помощью VoiceOver (Mac) или NVDA (Windows)
  • Запустите расширение axe DevTools
  • Проверьте дерево доступности — отражает ли оно ожидаемую структуру?

Распространённая ошибка с aria-hidden

Распространённая ошибка при использовании aria-hidden:

<!-- BAD: aria-hidden on element that still receives focus -->
<button aria-hidden="true">Close</button>
<!-- The button is still focusable but invisible to screen readers
     Screen reader users reach it via Tab but hear nothing -->

<!-- GOOD: for focus + hide, use hidden attribute or display:none: -->
<button hidden>Close</button>  <!-- removes from both tab order and AT -->

<!-- Or: if you must keep visible: -->
<button style="display:none" aria-hidden="true">Close</button>

Быстрая проверка

Что автоматически даёт добавление role="button" элементу div?

Итоги: ARIA и встроенный HTML

Основные правила ARIA:

  • Первое правило: по возможности используйте встроенный HTML
  • ARIA добавляет только семантику — функциональность необходимо реализовать самостоятельно
  • Три категории: роли, свойства, состояния
  • Роли ориентиров помогают пользователям программ чтения с экрана перемещаться по странице
  • Проверяйте результат с помощью панели специальных возможностей DevTools и программы чтения с экрана

Часто задаваемые вопросы

Урок «Когда использовать ARIA вместо встроенного HTML» бесплатный?

Да — полный текст урока «Когда использовать ARIA вместо встроенного HTML» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс HTML Academy, подпишись на CoddyKit PRO. Курс HTML Academy содержит 4 уроков всего.

Чему я научусь в уроке «Когда использовать ARIA вместо встроенного HTML»?

Следуйте первому правилу ARIA: отдавайте предпочтение встроенной семантике Ты практикуешь HTML Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать HTML Academy?

Предыдущий опыт не требуется. HTML Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Когда использовать ARIA вместо встроенного HTML»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке HTML Academy?

Да. Каждый урок HTML Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Когда использовать ARIA вместо встроенного HTML
  2. role button alert dialog и landmark
  3. aria-label aria-labelledby и aria-describedby
  4. aria-hidden и aria-live
← Назад к HTML Academy