fullPage.js — это библиотека для создания полноэкранных скролл-презентаций с вертикальными и горизонтальными слайдами. Важной частью современных веб-приложений является обеспечение доступности контента для всех пользователей, включая людей с ограниченными возможностями, что регулируется стандартами WCAG (Web Content Accessibility Guidelines). Рассмотрим, как fullPage.js обеспечивает соответствие этим стандартам и какие практические шаги необходимы для повышения доступности.
fullPage.js поддерживает управление с клавиатуры, что критично для пользователей, которые не могут использовать мышь. Основные возможности:
Для активации полного управления клавиатурой необходимо включить опцию:
new fullpage('#fullpage', {
keyboardScrolling: true,
animateAnchor: true,
});
Важно убедиться, что все интерактивные элементы внутри секций также
доступны через Tab и имеют фокусное состояние
(:focus), чтобы пользователь понимал, где находится.
Для соответствия WCAG рекомендуется использовать ARIA-атрибуты, которые помогают скринридерам интерпретировать структуру страницы:
role="region" — для каждой секции, чтобы обозначить
логический блок контента.aria-label или aria-labelledby — для
именования секций, например:<div class="section" role="region" aria-label="Главная секция">
...
</div>
aria-hidden="true" — скрывает из скринридеров те
секции, которые временно не видны на экране, снижая когнитивную
нагрузку.fullPage.js автоматически управляет видимостью секций с помощью
display и transform, поэтому рекомендуется при
необходимости явно обновлять атрибуты aria-hidden через
события afterLoad и onLeave:
new fullpage('#fullpage', {
afterLoad: function(origin, destination, direction){
destination.item.setAttribute('aria-hidden', 'false');
origin.item.setAttribute('aria-hidden', 'true');
}
});
WCAG требует достаточного контраста между текстом и фоном. fullPage.js не накладывает ограничения на стиль, поэтому ответственность за контрастность лежит на разработчике. Рекомендуется:
При переходе между секциями важно правильно перемещать фокус на видимые интерактивные элементы, чтобы скринридеры и клавиатурные пользователи могли сразу начать взаимодействовать. Используются события fullPage.js:
afterLoad: function(origin, destination, direction){
const focusable = destination.item.querySelector('button, a, input, [tabindex]:not([tabindex="-1"])');
if(focusable) focusable.focus();
}
Это предотвращает потерю ориентации пользователя при быстром скролле.
WCAG указывает на необходимость контроля анимации для людей с
чувствительностью к движению (prefers-reduced-motion).
fullPage.js позволяет адаптировать скорость прокрутки и отключать
анимации:
new fullpage('#fullpage', {
scrollingSpeed: 700,
});
if(window.matchMedia('(prefers-reduced-motion: reduce)').matches){
fullpage_api.setScrollingSpeed(0);
}
Такой подход уменьшает риск дискомфорта и соответствует рекомендациям WCAG.
fullPage.js поддерживает навигацию через якоря (anchors)
и URL-хэши. Для доступности:
anchors: ['home', 'about', 'services', 'contact']
<a href="#services">Услуги</a>).fullPage.js предоставляет множество событий, которые можно использовать для управления доступностью:
afterLoad — обновление фокуса и ARIA-атрибутов.onLeave — скрытие предыдущей секции из
скринридеров.afterSlideLoad — аналогичные действия для
горизонтальных слайдов.Пример комплексного управления доступностью:
new fullpage('#fullpage', {
anchors: ['home', 'about', 'services'],
afterLoad: function(origin, destination){
document.querySelectorAll('.section').forEach(section => {
section.setAttribute('aria-hidden', 'true');
});
destination.item.setAttribute('aria-hidden', 'false');
const focusable = destination.item.querySelector('a, button, input, [tabindex]:not([tabindex="-1"])');
if(focusable) focusable.focus();
}
});
Для соответствия WCAG рекомендуется:
fullPage.js предоставляет все базовые возможности для реализации доступной навигации, но полное соответствие WCAG требует корректной настройки ARIA, фокуса, контраста и контроля анимаций.
keyboardScrolling.prefers-reduced-motion.