Svelte-a11y — это плагин для SvelteKit, предназначенный для автоматической проверки и улучшения доступности компонентов на уровне HTML и ARIA. Он интегрируется в сборку проекта и анализирует разметку на этапе компиляции, выявляя потенциальные ошибки и недочёты в доступности интерфейса.
Ключевым аспектом работы плагина является статический анализ кода. Он проверяет корректность использования атрибутов ARIA, правильное вложение интерактивных элементов и соответствие семантической структуры стандартам WCAG.
Установка выполняется через npm или yarn:
npm install -D @sveltejs/a11y
После установки плагин подключается в конфигурации Vite или
SvelteKit. Пример для svelte.config.js:
import { sveltekit } from '@sveltejs/kit/vite';
import a11y from '@sveltejs/a11y';
export default {
plugins: [
sveltekit(),
a11y({ strict: true })
]
};
Параметр strict включает жёсткий режим
проверки, при котором ошибки доступности блокируют сборку, что
позволяет выявлять недочёты ещё на этапе разработки.
Svelte-a11y анализирует несколько ключевых аспектов:
Формы и элементы ввода
<label> для всех
<input> и <textarea>.aria-describedby для
подсказок.Кнопки и интерактивные элементы
role="button" только
интерактивным элементам.aria-label.Ссылки и навигация
<a>
элементов.href="#".ARIA-атрибуты
aria-expanded,
aria-hidden, aria-controls.Семантика заголовков
<h1>–<h6> в пределах
страницы.Плагин позволяет гибко настраивать правила. В
svelte.config.js можно отключать или включать отдельные
проверки:
a11y({
rules: {
'label-has-associated-control': 'warn',
'anchor-has-content': 'error',
'interactive-supports-focus': 'off'
}
})
error — ошибки блокируют сборку.warn — выводятся предупреждения в консоли, сборка
продолжается.off — правило игнорируется.Это позволяет адаптировать строгие требования доступности под конкретный проект, не теряя контроля над критическими аспектами.
Svelte-a11y совместим с большинством современных IDE и текстовых редакторов, поддерживающих плагины ESLint и Vite. В связке с ESLint можно получать подсветку ошибок прямо в редакторе.
Пример настройки для CI/CD:
name: a11y-check
on: [push, pull_request]
jobs:
check-accessibility:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Install dependencies
run: npm ci
- name: Run accessibility check
run: npx svelte-kit build
При включённом strict режиме сборка завершится с
ошибкой, если будут найдены критические проблемы доступности.
Ошибка: <input type="text" /> без
<label> Исправление:
<label for="username">Имя пользователя</label>
<input id="username" type="text" />
Ошибка: <a href="#"> без текста
Исправление:
<a href="/about">О проекте</a>
Ошибка: <button aria-label=""/>
пустой ARIA-label Исправление:
<button aria-label="Закрыть окно">×</button>
Svelte-a11y позволяет не только повысить доступность интерфейса, но и формализовать стандарты качества кода в команде, обеспечивая единообразие подхода к UI и улучшая пользовательский опыт для людей с ограниченными возможностями.