0Pricing
HTML Academy · Урок

aria-label aria-labelledby и aria-describedby

Задавайте доступные имена и описания для элементов

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

Почему важны доступные имена

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

aria-label

aria-label напрямую задаёт текстовое доступное имя элемента:

<button aria-label="Close dialog">×</button>
<!-- The × character has no accessible meaning
     aria-label provides the name: 'Close dialog, button' -->

<input type="search" aria-label="Search products">
<!-- No visible label — aria-label provides the accessible name -->

aria-labelledby

aria-labelledby указывает на другой элемент, который служит доступным именем:

<h2 id="section-title">Billing Information</h2>
<form aria-labelledby="section-title">
  <!-- Form's accessible name is 'Billing Information' -->
</form>

<!-- Multiple id references: -->
<button aria-labelledby="action-verb object-name">
  Delete
</button>
<span id="object-name" hidden>User Account</span>
<!-- Screen reader: 'Delete User Account, button' -->

aria-describedby

aria-describedby предоставляет расширенное описание (дополнение к имени):

<label for="pwd">Password</label>
<input
  type="password"
  id="pwd"
  aria-describedby="pwd-hint"
>
<p id="pwd-hint">Must be 8+ characters with one uppercase letter and one number.</p>
<!-- Screen reader: 'Password [input]' then reads the description on focus -->

Метка и описание

Разница между доступным именем и описанием:

  • Доступное имя — идентифицирует элемент (aria-label, aria-labelledby или элемент label)
  • Описание — дополняет имя дополнительным контекстом (aria-describedby)
  • Программы чтения с экрана объявляют: имя, роль, состояние → затем описание

aria-label для ориентиров

Используйте aria-label, чтобы различать несколько ориентиров одного типа:

<nav aria-label="Primary">...</nav>
<nav aria-label="Breadcrumb">...</nav>

<!-- Screen reader landmark list:
     'Primary, navigation'
     'Breadcrumb, navigation' -->

<!-- When only one nav, aria-label is optional but still helpful -->

aria-labelledby для разделов

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

<section aria-labelledby="about-heading">
  <h2 id="about-heading">About Our Team</h2>
  <p>We are a team of passionate developers...</p>
</section>
<!-- Screen reader: 'About Our Team, region' when entering section -->

aria-label и видимый текст

aria-label заменяет видимый текст — будьте осторожны:

<button aria-label="Delete account permanently">
  Delete
</button>
<!-- Screen reader hears: 'Delete account permanently'
     Sighted user reads: 'Delete' -->

<!-- Best practice: visible text and aria-label should agree
     If possible, include extra context in visible text too:
     <button>Delete account permanently</button> -->

<!-- aria-label should start with the visible text when possible
     for speech recognition users who use voice commands -->

aria-describedby для ошибок

Связывайте сообщения об ошибках с полями ввода:

<label for="email">Email</label>
<input
  type="email"
  id="email"
  aria-describedby="email-error"
  aria-invalid="true"
>
<span id="email-error" role="alert">
  Please enter a valid email address.
</span>
<!-- When input receives focus, screen reader reads:
     'Email [field], invalid. Please enter a valid email address.' -->

Несколько ссылок aria-describedby

aria-describedby может ссылаться на несколько элементов:

<input
  type="password"
  aria-label="New password"
  aria-describedby="pwd-hint pwd-strength"
>
<p id="pwd-hint">Must be 8+ characters.</p>
<meter id="pwd-strength" aria-label="Password strength" value="2" max="4">Medium</meter>
<!-- Both elements are announced as the description -->

Видимые и скрытые подписи

Если видимая подпись невозможна, используйте класс sr-only:

<label for="search" class="sr-only">Search</label>
<input type="search" id="search" placeholder="Search...">

/* Visually hidden but in accessibility tree: */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0,0,0,0);
  white-space: nowrap;
  border: 0;
}

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

В чём разница между aria-label и aria-labelledby?

Итоги: подписи ARIA

Основные правила создания доступных имён:

  • aria-label — встроенное текстовое имя для элементов без видимых подписей
  • aria-labelledby — ссылается на существующий видимый текст по id
  • aria-describedby — дополнительное описание (читается после имени)
  • Предпочитайте видимые подписи и встроенные элементы label в HTML
  • aria-label у ориентиров различает несколько областей одного типа

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

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

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

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

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

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

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

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

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