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

Исчерпывающий чек-лист для доступных каруселей

Информация о статье

Последнее обновление:

Ах, эти карусели — они так популярны и в то же время столь проблематичны, когда речь заходит о доступности. Здесь вы найдете полный, объединенный чек-лист всех контрольных точек из моего полного руководства по доступным каруселям — идеальный вариант для непосредственного использования в вашем проекте или аудиторском отчете.

Основная структура

  • Карусель заключена в элемент <section> с aria-roledescription="Карусель". [1], [2]
  • aria-roledescription локализован на языке пользователя. [3]
  • Карусель имеет заголовок с уникальным ID. [4]
  • Секция имеет атрибут aria-labelledby, который ссылается на заголовок. [5]

Контейнер слайдов

  • Слайды находятся в <ul> с отдельными элементами <li>. [6], [7]
  • <ul> имеет aria-label, описывающий список слайдов. [8]

Содержимое слайдов

  • Каждый слайд является элементом <article> для семантической структуризации. [1]
  • Каждый слайд имеет aria-roledescription="Слайд". [2]
  • aria-roledescription локализован. [3]
  • Каждый слайд имеет уникальный заголовок с ID. [4]
  • Каждый слайд имеет aria-labelledby, который ссылается на заголовок. [5]
  • Каждый слайд имеет aria-posinset и aria-setsize. [7]
  • Скрытые слайды помечены aria-hidden="true" и inert или display:none. [9]

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

  • После ручного переключения фокус перемещается на заголовок нового слайда. [10], [11]
  • Фокус переносится только после завершения анимации. [12]

Управление автоматической ротацией

  • Присутствует видимая кнопка "Пауза/Воспроизведение". [13], [14]
  • Кнопка является настоящим элементом <button> с aria-label и title. [9], [8], [15]
  • Кнопка использует aria-pressed для отображения состояния (включено/выключено). [16]
  • Кнопка доступна для управления с помощью клавиатуры (Enter, Leertaste). [17]
  • Явный стиль фокуса с контрастом ≥ 3:1. [18], [19]
  • Контраст кнопки ≥ 3:1. [19]
  • Размер кнопки не менее 44 × 44 пикселей. [20]
  • Автоматическая ротация приостанавливается при взаимодействии мышью или клавиатурой. [13]
  • Ротация учитывает prefers-reduced-motion. [13]

Кнопки-стрелки (Вперед/Назад)

  • Стрелочная навигация размечена как <ul> с aria-label. [6], [8]
  • Стрелки расположены согласованно в начале или конце карусели. [21]
  • Стрелки являются элементами <button> с aria-label и title. [9], [8], [15]
  • Управление с клавиатуры работает (Enter/Leertaste). [17]
  • Явный стиль фокуса с контрастом ≥ 3:1. [18], [19]
  • Контраст стрелок ≥ 3:1. [19]
  • Размер кнопок не менее 44 × 44 пикселей. [20]
  • Декоративные иконки помечены aria-hidden="true". [22]

Точечная навигация (Точки)

  • Точки расположены в <fieldset> с <legend>. [23], [7]
  • Точки реализованы как переключатели (Radio-Buttons). [9], [17]
  • Клавиши Home/End переключают на первый/последний слайд; ArrowLeft/ArrowRight или Up/Down осуществляют навигацию между слайдами. [17]
  • Каждая точка имеет aria-label или видимую текстовую метку. [8], [24]
  • Элементы в фокусе визуально различимы (контраст ≥ 3:1). [18], [19]
  • Активная точка визуально выделена и объявляется скринридерами как активная. [9]
  • Активная точка программно различима. [9]

Живая область для смены слайдов

  • Существует скрытый элемент с aria-live="polite" и aria-atomic="true". [12]
  • Живая область имеет role="status". [25]
  • Объявление происходит после переноса фокуса на новый слайд. [12]
  • Нет объявления при автоматической ротации. [12]
  • Живая область обновляется только при ручных переключениях. [12]

Визуальный фокус и фокус клавиатуры

  • Все интерактивные элементы (точки, стрелки, кнопка паузы) имеют четко видимый стиль фокуса. [18]
  • Стиль фокуса имеет контраст ≥ 3:1 по отношению к фону. [19]

Инструкции по взаимодействию

  • Существует (возможно, скрытый) текстовый элемент с инструкциями по взаимодействию. [26]
  • Инструкция связана с каруселью через aria-describedby. [27]
  • Инструкция также связана с каждым слайдом через aria-describedby. [27]

Общие требования (сквозные)

  • Структура семантически корректна: section, ul/li, article. [7]
  • Обеспечена полная доступность с клавиатуры. [17]
  • Присутствует надежное управление фокусом. [11]
  • Автоматическое движение управляется. [13]
  • Скринридеры получают четкие сообщения о статусе и позиции. [12]
  • Прогрессивное улучшение (Progressive Enhancement): работает даже без JavaScript.
  • Интернационализация: Локализованные метки (особенно aria-roledescription). [3]
  • Учитывается prefers-reduced-motion. [13]
  • Регулярное тестирование с клавиатурой и скринридерами (VoiceOver, JAWS, NVDA).

Заключение

С помощью этого чек-листа вы отлично подготовлены для разработки или проверки карусели, соответствующей руководствам WCAG 2.2. Помните, что доступность — это непрерывный процесс: регулярно тестируйте с реальными пользователями и различными вспомогательными технологиями, чтобы убедиться, что ваша карусель остается доступной для всех.

  1. W3C, «G115: Using semantic elements to mark up structure», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/general/G115
  2. W3C, «ARIA4: Using a WAI-ARIA role to expose the role of a user interface component», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA4
  3. W3C, «Success Criterion 3.1.2 Language of Parts», 2023, [Онлайн]. Доступно на: https://www.w3.org/TR/WCAG22/#language-of-parts
  4. W3C, «G141: Organizing a page using headings», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/general/G141
  5. W3C, «ARIA13: Using aria-labelledby to name regions and landmarks», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA13
  6. W3C, «H48: Using ol, ul and dl for lists or groups of links», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/html/H48
  7. W3C, «Success Criterion 1.3.1 Info and Relationships», 2023, [Онлайн]. Доступно на: https://www.w3.org/TR/WCAG22/#info-and-relationships
  8. W3C, «ARIA6: Using aria-label to provide labels for objects», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA6
  9. W3C, «Success Criterion 4.1.2 Name, Role, Value», 2023, [Онлайн]. Доступно на: https://www.w3.org/TR/WCAG22/#name-role-value
  10. W3C, «G59: Placing the interactive elements in an order that follows sequences and relationships within the content», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/general/G59
  11. W3C, «Success Criterion 2.4.3 Focus Order», 2023, [Онлайн]. Доступно на: https://www.w3.org/TR/WCAG22/#focus-order
  12. W3C, «Success Criterion 4.1.3 Status Messages», 2023, [Онлайн]. Доступно на: https://www.w3.org/TR/WCAG22/#status-messages
  13. W3C, «Success Criterion 2.2.2 Pause, Stop, Hide», 2023, [Онлайн]. Доступно на: https://www.w3.org/TR/WCAG22/#pause-stop-hide
  14. W3C, «G4: Allowing the content to be paused and restarted from where it was paused», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/general/G4
  15. W3C, «H65: Using the title attribute to identify form controls when the label element cannot be used», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/html/H65
  16. W3C, «ARIA16: Using aria-labelledby to provide a name for user interface controls», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA16
  17. W3C, «Success Criterion 2.1.1 Keyboard», 2023, [Онлайн]. Доступно на: https://www.w3.org/TR/WCAG22/#keyboard
  18. W3C, «Success Criterion 2.4.7 Focus Visible», 2023, [Онлайн]. Доступно на: https://www.w3.org/TR/WCAG22/#focus-visible
  19. W3C, «Success Criterion 1.4.11 Non-text Contrast», 2023, [Онлайн]. Доступно на: https://www.w3.org/TR/WCAG22/#non-text-contrast
  20. W3C, «Success Criterion 2.5.5 Target Size (Enhanced)», 2023, [Онлайн]. Доступно на: https://www.w3.org/TR/WCAG22/#target-size-enhanced
  21. W3C, «Success Criterion 3.2.3 Consistent Navigation», 2023, [Онлайн]. Доступно на: https://www.w3.org/TR/WCAG22/#consistent-navigation
  22. W3C, «Success Criterion 1.1.1 Non-text Content», 2023, [Онлайн]. Доступно на: https://www.w3.org/TR/WCAG22/#non-text-content
  23. W3C, «H71: Providing a description for groups of form controls using fieldset and legend elements», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/html/H71
  24. W3C, «H37: Using alt attributes on img elements», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/html/H37
  25. W3C, «ARIA22: Using role=status to present status messages», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA22
  26. W3C, «G73: Providing a long description in another location with a link to it that is immediately adjacent to the non-text content», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/general/G73
  27. W3C, «ARIA1: Using the aria-describedby property to provide a descriptive label for user interface controls», 2023, [Онлайн]. Доступно на: https://www.w3.org/WAI/WCAG22/Techniques/aria/ARIA1

Об авторе

Портрет Дмитрия Дугарева

С наилучшими пожеланиями,

Дмитрий Дугарев

Основатель Barrierenlos℠ и разработчик плагина Semanticality™. Имея степень магистра, более 8 лет опыта в веб-разработке и IT-комплаенса в компаниях «Большой четвёрки», банках и концернах и более 1 000 протестированных на доступность веб-страниц для более чем 50 клиентов, я помогаю веб-командам системно внедрять доступность — без многомесячных переделок.

Станьте сами разработчиком-профи EAA - всего за 4 дня!

Узнайте на нашем 4-дневном семинаре, как самостоятельно проводить сложные аудиты и создавать доступные компоненты. Получите индивидуальный учебный план, 1:1 стратегическую консультацию и сертификат.

Зарегистрироваться на воркшоп сейчас