Screen reader support является критически важным аспектом доступности веб-приложений. Библиотека Carbon Components Svelte изначально проектировалась с учетом лучших практик доступности, включая поддержку пользователей с нарушениями зрения. В Svelte-компонентах Carbon встроены семантические элементы и ARIA-атрибуты, которые позволяют экранным читалкам правильно интерпретировать интерфейс.
Семантическая разметка Каждый компонент Carbon использует HTML-элементы, соответствующие своему функциональному назначению. Например:
<button> для интерактивных кнопок<input> с соответствующим типом для полей
ввода<label> для привязки текста к полю формыЭто позволяет экранным читалкам озвучивать элементы корректно без дополнительной настройки.
ARIA-атрибуты Для компонентов, где семантика HTML недостаточна, применяются ARIA-атрибуты:
aria-label и aria-labelledby для
предоставления понятного названия элементуaria-describedby для описания элементаaria-hidden="true" для скрытия декоративных элементов
от читалокВ Carbon Components Svelte большинство компонентов уже имеют
встроенные ARIA-атрибуты, например, кнопки с иконками автоматически
получают aria-label, если текст отсутствует.
tabindex, что обеспечивает
корректное перемещение по странице при использовании клавиатуры и
экранных читалок.Toggle, Checkbox), используют
aria-checked для передачи состояния
включено/выключено.Modal и
Dialog автоматически управляют фокусом при открытии и
закрытии, а также применяют aria-modal="true" для
ограничения взаимодействия с фоновым контентом.Для динамически обновляемого контента используются области живого обновления (live regions):
role="alert" для сообщений об ошибках или критических
уведомленийrole="status" для обычной информации, которую
необходимо озвучитьКомпоненты форм в Carbon Svelte поддерживают интеграцию с этими зонами, что обеспечивает корректную озвучку ошибок и подсказок при взаимодействии с формами.
Пример текстового поля с поддержкой экранных читалок:
<TextInput
id="email"
labelText="Email"
placeholder="Введите email"
type="email"
required
invalidText="Введите корректный email"
/>
labelText создаёт <label> для
поляinvalidText выводит сообщение об ошибке в область с
aria-live="polite", что озвучивается экранной читалкой при
валидацииПример кнопки с иконкой:
<Button
kind="ghost"
hasIconOnly={true}
renderIcon={Search20}
iconDescription="Поиск"
on:click={handleSearch}
/>
hasIconOnly={true} указывает, что кнопка содержит
только иконкуiconDescription автоматически добавляется как
aria-label, что позволяет читалке озвучить функциональность
кнопкиЕсли создается собственный компонент на базе Carbon, важно:
aria-* атрибуты, соответствующие поведению
элементаbind:this и методы Svelte,
чтобы элемент получал фокус при интеракцииДля проверки корректности поддержки экранных читалок рекомендуется:
Carbon Components Svelte обеспечивает разработку полностью доступных приложений, минимизируя необходимость ручной настройки доступности, но при этом оставляя гибкость для кастомизации и расширения функционала.