0Pricing
HTML Academy · Урок

aria-hidden и aria-live

Скрывайте декоративные элементы и объявляйте динамическое содержимое пользователям экранных дикторов

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

aria-hidden

aria-hidden="true" удаляет элемент из дерева доступности — программы чтения с экрана полностью его пропускают:

<!-- Decorative icon: visible but skip by screen readers -->
<span aria-hidden="true">★★★★☆</span>
<span class="sr-only">4 out of 5 stars</span>

<!-- Decorative separator -->
<img src="divider.svg" alt="" aria-hidden="true">

<!-- Note: aria-hidden does NOT affect visibility or tab focus
     A button with aria-hidden is still tabbable! -->

Сценарии использования aria-hidden

Подходящие случаи использования aria-hidden:

<!-- 1. Icons next to descriptive text -->
<button>
  <svg aria-hidden="true"><!-- icon --></svg>
  Save Document
</button>

<!-- 2. Repeated text in a card link -->
<a href="/blog/post-1">
  <span aria-hidden="true">Read more</span>
  <span class="sr-only">Read more: HTML5 Forms Guide</span>
</a>

<!-- 3. UI decoration (dots, decorative borders) -->
<span aria-hidden="true">•••</span>

Типичная ошибка при использовании aria-hidden

Никогда не применяйте aria-hidden к элементам, которые могут получать focus:

<!-- BAD: button is in tab order but invisible to screen readers -->
<button aria-hidden="true">Close</button>

<!-- Users reach this via Tab but hear nothing
     They cannot tell if they're on a button or lost focus -->

<!-- If you want to hide from both: use hidden attribute -->
<button hidden>Close</button>

<!-- Or: disabled (but disabled removes from tab order) -->
<button disabled aria-hidden="true">Close</button>

aria-live

aria-live превращает область в живую область — изменения объявляются автоматически:

<!-- polite: announce when user is idle -->
<div aria-live="polite" id="status"></div>

<!-- assertive: announce immediately, interrupting current speech -->
<div aria-live="assertive" id="errors"></div>

<script>
// Inject text to trigger announcement:
document.getElementById('status').textContent = 'File saved successfully.';
// Screen reader announces this without user moving focus
</script>

Значения aria-live

Три значения aria-live:

  • off — по умолчанию: изменения не объявляются
  • polite — объявляется, когда пользователь делает паузу; для обновлений, не требующих срочности
  • assertive — объявляется немедленно и прерывает текущую речь; для ошибок и критически важных предупреждений

aria-atomic

aria-atomic определяет, будет ли объявляться вся область или только изменившиеся части:

<div aria-live="polite" aria-atomic="true" id="timer">
  Time remaining: 05:00
</div>
<!-- aria-atomic="true": announce the whole div each update -->
<!-- Without it: only the changed text node is announced
     'Time remaining: 05:00' vs just '05:00' -->

<script>
setInterval(() => {
  document.getElementById('timer').textContent = `Time remaining: ${getTime()}`;
}, 1000);
</script>

aria-relevant

aria-relevant указывает, какие типы изменений объявляются:

<div
  aria-live="polite"
  aria-relevant="additions text"   <!-- announce added content and text changes -->
  id="feed"
>
  <!-- New items added here -->
</div>
<!-- Values: additions, removals, text, all
     Default: additions text
     aria-relevant="removals" needed to announce deleted items -->

Рекомендации для живых областей

Рекомендации по работе с живыми областями:

  • Используйте одну постоянную живую область для каждого типа объявлений (не создавайте и не удаляйте её)
  • Начинайте с пустого содержимого; добавляйте текст, чтобы вызвать объявление
  • Делайте объявления краткими — программы чтения с экрана могут прерывать речь или отставать
  • Для состояний загрузки используйте polite
  • Для ошибок формы используйте assertive или role="alert"

Шаблоны для всплывающих уведомлений

Озвучивание всплывающих уведомлений с помощью живых областей:

<div
  role="status"
  aria-live="polite"
  aria-atomic="true"
  id="toast-container"
  class="sr-only"
></div>

<script>
function showToast(message) {
  const container = document.getElementById('toast-container');
  container.textContent = '';
  // Force rerender for re-announcement:
  requestAnimationFrame(() => {
    container.textContent = message;
  });
}
</script>

aria-busy

aria-busy="true" указывает, что содержимое обновляется:

<div id="feed" aria-live="polite" aria-busy="false">
  <!-- content -->
</div>

<script>
const feed = document.getElementById('feed');
feed.setAttribute('aria-busy', 'true');

await loadContent();
feed.innerHTML = newContent;

feed.setAttribute('aria-busy', 'false');
// Only now does the live region announce the update
</script>

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

Когда следует использовать aria-live="assertive", а когда — "polite"?

Итоги: aria-hidden и aria-live

Основы скрытия и живых областей:

  • aria-hidden="true" — удаляет элемент из дерева доступности (но не элементы, которые могут получать focus!)
  • aria-live="polite" — объявляет изменения, когда пользователь бездействует
  • aria-live="assertive" — объявляет изменения немедленно (для ошибок)
  • aria-atomic="true" — при изменении объявляет всю область
  • aria-busy — подавляет объявления во время загрузки

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

Урок «aria-hidden и aria-live» бесплатный?

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

Чему я научусь в уроке «aria-hidden и aria-live»?

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

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

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

Сколько времени занимает урок «aria-hidden и aria-live»?

Большинство уроков 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