Naive UI — это современная библиотека компонентов для Vue 3, ориентированная на высокую кастомизацию и удобство использования. Одним из ключевых аспектов её дизайна является соблюдение стандартов доступности (Accessibility, a11y). Каждый компонент Naive UI проектируется с учетом требований WCAG 2.1, что обеспечивает корректное взаимодействие пользователей с различными ограничениями: слабовидящих, людей с нарушениями моторики и пользователей, использующих вспомогательные технологии.
Большинство интерактивных компонентов Naive UI автоматически включают
необходимые ARIA атрибуты, такие как role,
aria-label, aria-labelledby,
aria-describedby.
Пример использования:
<n-button aria-label="Отправить форму">
Отправить
</n-button>
aria-label обеспечивает корректное озвучивание кнопки
при использовании экранных читалок.n-modal, Naive UI автоматически управляет фокусом и
добавляет aria-modal="true".Важной частью accessibility является логика фокусировки. В Naive UI реализовано:
n-dialog фокус автоматически устанавливается на первый
интерактивный элемент внутри окна.Пример модального окна с управлением фокусом:
<n-dialog v-model:show="isOpen" title="Подтверждение">
<template #default>
<p>Вы действительно хотите удалить элемент?</p>
<n-button @click="confirm">Да</n-button>
<n-button @click="isOpen = false">Нет</n-button>
</template>
</n-dialog>
Naive UI предоставляет набор интуитивно доступных компонентов
форм, включая n-input, n-select,
n-checkbox, n-radio-group. Особенности:
label с полем через
for или атрибут aria-labelledby.aria-invalid и
aria-describedby, что позволяет экранным читалкам правильно
интерпретировать статус поля.Пример доступного текстового поля с ошибкой:
<n-form-item label="Имя пользователя" :feedback="errorMessage">
<n-input v-model="username" :status="errorMessage ? 'error' : 'default'" />
</n-form-item>
Все компоненты Naive UI проектируются с учетом полной клавиатурной доступности:
n-menu и n-dropdown поддерживают навигацию
стрелками и выбор элементов через Enter.n-tabs позволяют переключаться между вкладками с
помощью стрелок и табуляции.n-date-picker и n-time-picker
реализована навигация по календарю и времени с клавиатуры.Доступность не ограничивается только навигацией и ARIA. В Naive UI предусмотрены инструменты для соблюдения цветового контраста:
Пример кастомной темы с увеличенным контрастом:
const theme = {
common: {
primaryColor: '#0055ff',
textColor1: '#000000',
textColor2: '#333333',
}
}
createApp(App).use(naive, { theme })
Для элементов, которые не должны отображаться визуально, но должны
быть доступны для экранных читалок, Naive UI поддерживает класс
visually-hidden.
Пример:
<span class="visually-hidden">Дополнительная информация для экранного читалки</span>
Для поддержания стандартов accessibility рекомендуется:
visually-hidden.В совокупности эти механизмы делают Naive UI безопасным и удобным инструментом для разработки приложений, соответствующих современным стандартам доступности.