← Назад к вопросам
Что входит в технику Accessibility?
1.0 Junior🔥 121 комментариев
#HTML и CSS#Браузер и сетевые технологии
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Что входит в технику Accessibility (a11y)
Accessibility — это практика разработки веб-приложений так, чтобы они были доступны для всех пользователей, включая людей с ограниченными возможностями. Это не просто хорошее намерение, а юридическое требование (WCAG, ADA) и бизнес-практика, которая расширяет аудиторию.
Семантический HTML
Основой доступности является правильная семантика:
<!-- ❌ Неправильно: div вместо button -->
<div onclick="handleClick()" role="button">Нажми меня</div>
<!-- ✅ Правильно: семантический элемент -->
<button onclick="handleClick()">Нажми меня</button>
Используй правильные теги:
<button>,<a>для интерактивных элементов<header>,<nav>,<main>,<footer>для структуры<label>для текстовых полей<h1>,<h2>,<h3>для заголовков
ARIA-атрибуты
Когда семантики недостаточно, используй ARIA (Accessible Rich Internet Applications):
<!-- Роли -->
<div role="alert" aria-live="polite">Ошибка загрузки</div>
<!-- Состояния -->
<button aria-expanded="false" aria-controls="menu">
Меню
</button>
<!-- Описания -->
<input aria-label="Поиск по сайту" type="search" />
<img src="photo.jpg" alt="Описание изображения" />
Навигация с клавиатуры
- Tab: навигация между элементами
- Enter/Space: активация кнопок
- Стрелки: навигация в меню
function useKeyboardNavigation() {
const handleKeyDown = (e: React.KeyboardEvent) => {
if (e.key === "Enter" || e.key === " ") {
e.preventDefault();
handleActivate();
}
};
return { handleKeyDown };
}
Контрастность и читаемость
- Минимум 4.5:1 для обычного текста (WCAG AA)
- 3:1 для крупного текста
- Не полагайся только на цвет (используй иконки, текст, узоры)
Фокус и индикаторы
/* Видимый фокус для клавиатурной навигации */
button:focus {
outline: 2px solid #4A90E2;
outline-offset: 2px;
}
/* ❌ Не удаляй outline без замены! */
button:focus {
outline: none; /* Bad! */
}
Изображения и мультимедия
altтекст для всех изображений- Субтитры для видео
- Транскрипции для аудио
- Описания для сложных диаграмм
Формы
<!-- ✅ Связь label с input -->
<label for="email">Email:</label>
<input id="email" type="email" name="email" />
<!-- Валидация доступна -->
<input
aria-describedby="email-error"
aria-invalid="true"
/>
<span id="email-error">Некорректный email</span>
Движение и анимация
Уважай пользовательские предпочтения:
/* Отключи анимацию если пользователь предпочитает -->
@media (prefers-reduced-motion: reduce) {
* {
animation: none !important;
transition: none !important;
}
}
Структура страницы
- Один
<h1>на странице - Логическая иерархия заголовков (h1 → h2 → h3)
- Каждой форме —
<legend> - Используй
<table>для табличных данных
Тестирование доступности
- WAVE — браузерное расширение
- axe DevTools — автоматические проверки
- Screen Reader (VoiceOver, NVDA) — ручное тестирование
- Lighthouse — в DevTools
Доступность — это не микрофункция, а фундаментальный принцип дизайна и разработки.