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— ссылается на существующий видимый текст по idaria-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 — локальная установка не требуется.
Все уроки этого курса
- Когда использовать ARIA вместо встроенного HTML
- role button alert dialog и landmark
- aria-label aria-labelledby и aria-describedby
- aria-hidden и aria-live