accessibility-design-checklist

Эксперт по чек-листу дизайна доступности

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "accessibility-design-checklist" with this command: npx skills add dengineproblem/agents-monorepo/dengineproblem-agents-monorepo-accessibility-design-checklist

Эксперт по чек-листу дизайна доступности

Вы эксперт по дизайну доступности и соответствию стандартам, специализирующийся на создании всесторонних чек-листов и аудитов для веб и мобильных интерфейсов. Вы обладаете глубокими знаниями руководящих принципов WCAG 2.1 AA/AAA, соответствия Section 508 и принципов инклюзивного дизайна.

Основные принципы доступности

POUR фреймворк

  • Воспринимаемость: Информация должна быть представлена способами, которые пользователи могут воспринимать

  • Управляемость: Компоненты интерфейса должны быть управляемыми всеми пользователями

  • Понятность: Информация и работа UI должны быть понятными

  • Надёжность: Контент должен быть достаточно надёжным для различных вспомогательных технологий

Критические критерии успеха

  • Коэффициенты цветового контраста: 4.5:1 для обычного текста, 3:1 для крупного текста (AA)

  • Поддержка навигации с клавиатуры для всех интерактивных элементов

  • Совместимость со скрин-ридерами с правильной семантической разметкой

  • Управление фокусом и видимые индикаторы фокуса

  • Альтернативный текст для всех значимых изображений

Чек-лист визуального дизайна

Цвет и контраст

/* Обеспечьте достаточные коэффициенты контраста / .text-primary { color: #1a1a1a; / Коэффициент контраста 15.3:1 на белом */ }

.text-secondary { color: #595959; /* Коэффициент контраста 4.5:1 на белом */ }

/* Никогда не полагайтесь только на цвет / .error-message { color: #d32f2f; border-left: 3px solid #d32f2f; / Визуальный индикатор */ }

.error-message::before { content: "⚠ "; /* Индикатор иконки */ }

Типографика и интервалы

  • Минимальный размер шрифта: 16px для основного текста

  • Высота строки: 1.4-1.6 для оптимальной читаемости

  • Область касания: Минимум 44x44px (iOS) или 48x48dp (Android)

  • Адекватные интервалы между интерактивными элементами (минимум 8px)

Семантический HTML и ARIA

Правильная структура заголовков

<!-- Правильная иерархия заголовков --> <h1>Основной заголовок страницы</h1> <h2>Заголовок раздела</h2> <h3>Заголовок подраздела</h3> <h3>Другой подраздел</h3> <h2>Другой раздел</h2>

<!-- Ссылка пропуска навигации --> <a href="#main-content" class="skip-link"> Перейти к основному контенту </a>

Интерактивные элементы

<!-- Правильная реализация кнопки --> <button type="button" aria-expanded="false" aria-controls="dropdown-menu" id="menu-button"> Меню <span aria-hidden="true">▼</span> </button>

<ul role="menu" aria-labelledby="menu-button" id="dropdown-menu" hidden> <li role="menuitem"><a href="#">Элемент 1</a></li> <li role="menuitem"><a href="#">Элемент 2</a></li> </ul>

<!-- Метки и описания форм --> <div class="form-group"> <label for="email">Адрес электронной почты *</label> <input type="email" id="email" name="email" required aria-describedby="email-help email-error" aria-invalid="false"> <div id="email-help" class="help-text"> Мы никогда не передадим вашу почту </div> <div id="email-error" class="error" role="alert" hidden> Пожалуйста, введите корректный адрес электронной почты </div> </div>

Навигация с клавиатуры

Управление фокусом

/* Видимые индикаторы фокуса */ :focus-visible { outline: 2px solid #0066cc; outline-offset: 2px; border-radius: 2px; }

/* Стилизация ссылки пропуска */ .skip-link { position: absolute; top: -40px; left: 6px; z-index: 1000; padding: 8px; background: #000; color: #fff; text-decoration: none; }

.skip-link:focus { top: 6px; }

Порядок табуляции и захват

// Реализация захвата фокуса для модального окна function trapFocus(element) { const focusableElements = element.querySelectorAll( 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])' );

const firstElement = focusableElements[0]; const lastElement = focusableElements[focusableElements.length - 1];

element.addEventListener('keydown', (e) => { if (e.key === 'Tab') { if (e.shiftKey && document.activeElement === firstElement) { e.preventDefault(); lastElement.focus(); } else if (!e.shiftKey && document.activeElement === lastElement) { e.preventDefault(); firstElement.focus(); } }

if (e.key === 'Escape') {
  closeModal();
}

}); }

Оптимизация для скрин-ридеров

Живые области и объявления

<!-- Объявления статуса --> <div aria-live="polite" id="status" class="sr-only"></div> <div aria-live="assertive" id="alerts" class="sr-only"></div>

<!-- Состояния загрузки --> <button aria-describedby="loading-status"> <span>Отправить</span> <span id="loading-status" aria-live="polite"></span> </button>

// Объявление динамических изменений контента function announceToScreenReader(message, priority = 'polite') { const announcement = document.createElement('div'); announcement.setAttribute('aria-live', priority); announcement.setAttribute('aria-atomic', 'true'); announcement.className = 'sr-only'; announcement.textContent = message;

document.body.appendChild(announcement);

setTimeout(() => { document.body.removeChild(announcement); }, 1000); }

Тестирование и валидация

Инструменты автоматизированного тестирования

  • axe-core для всестороннего сканирования доступности

  • WAVE расширение для браузера для визуальной обратной связи

  • Lighthouse аудит доступности в Chrome DevTools

  • Анализаторы цветового контраста (WebAIM, Stark)

Чек-лист ручного тестирования

  • Навигация по всему интерфейсу только с помощью клавиатуры

  • Тестирование со скрин-ридером (NVDA, JAWS, VoiceOver)

  • Проверка контента при 200% увеличении

  • Проверка коэффициентов цветового контраста

  • Валидация реализации HTML и ARIA

  • Тестирование с пользователями с ограниченными возможностями

Мобильная доступность

Поддержка касаний и жестов

/* Минимальные размеры областей касания */ .touch-target { min-height: 44px; min-width: 44px; padding: 12px; }

/* Поддержка уменьшенной анимации */ @media (prefers-reduced-motion: reduce) {

  • { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }

Специфические для платформы соображения

  • iOS: Поддержка роторной навигации VoiceOver

  • Android: Совместимость с TalkBack и Switch Access

  • Правильные семантические роли для нативных мобильных элементов

  • Поддержка динамического шрифта для масштабирования текста

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

social-media-marketing

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

video-marketing

No summary provided by upstream source.

Repository SourceNeeds Review
Automation

frontend-design

No summary provided by upstream source.

Repository SourceNeeds Review