Driver.js — это мощная библиотека для создания интерактивных подсказок и туров по интерфейсу веб-приложений. Одной из ключевых особенностей является возможность настройки доступности, что позволяет создавать туры, удобные для пользователей с ограниченными возможностями, включая работу с клавиатурой и экранными читалками.
Driver.js автоматически устанавливает фокус на активный элемент при отображении шага. Это важно для пользователей, использующих навигацию с клавиатуры:
const driver = new Driver({
keyboardControl: true,
});
driver.defineSteps([
{
element: '#submit-button',
popover: {
title: 'Кнопка отправки',
description: 'Нажмите Enter, чтобы отправить форму.'
}
}
]);
driver.start();
Ключевые моменты:
keyboardControl: true — позволяет пользователю
управлять навигацией между шагами с помощью клавиатуры (стрелки, Enter,
Esc).Driver.js использует ARIA-атрибуты для обеспечения доступности контента:
role="dialog" и aria-modal="true" на
поповере для обозначения модального окна.aria-labelledby и aria-describedby
связывают заголовок и описание поповера со скринридером.aria-hidden для
фоновых элементов, фокусируя внимание на текущем элементе.Пример настройки:
const driver = new Driver({
stageBackground: '#ffffff',
opacity: 0.75,
allowClose: false,
keyboardControl: true
});
Объяснение настроек:
stageBackground и opacity визуально
выделяют элемент, но при этом не мешают восприятию с помощью
скринридера.allowClose: false предотвращает случайное закрытие
тура, важное для пользователей, которые используют клавиатуру или
вспомогательные технологии.Для пользователей с когнитивными нарушениями или медленным восприятием информации важно управлять анимациями и задержками:
const driver = new Driver({
animate: false,
doneBtnText: 'Готово',
nextBtnText: 'Далее',
prevBtnText: 'Назад'
});
Особенности:
animate: false отключает анимации, уменьшая визуальную
нагрузку.doneBtnText,
nextBtnText, prevBtnText) помогает создавать
локализованные и понятные инструкции.Driver.js позволяет работать с элементами, которые могут быть скрыты стилями или динамически созданы в DOM:
driver.defineSteps([
{
element: '#hidden-element',
popover: {
title: 'Скрытый элемент',
description: 'Этот элемент появляется только после выполнения действия.'
},
onNext: function () {
document.querySelector('#hidden-element').style.display = 'block';
}
}
]);
Принципы:
display: none или
visibility: hidden, могут быть временно показаны для
корректной работы тура.onNext и onPrevious
позволяет динамически управлять состоянием элементов, сохраняя
доступность.Driver.js предоставляет события жизненного цикла шагов
(onNext, onPrevious, onStart,
onReset), которые можно использовать для дополнительной
настройки доступности:
driver.on('next', (step) => {
const el = step.element;
if (el) el.setAttribute('aria-expanded', 'true');
});
Применение:
keyboardControl: true для обеспечения
полной навигации с клавиатуры.Эти настройки делают Driver.js не просто инструментом создания красивых туров, а полноценным средством для реализации доступного и инклюзивного интерфейса веб-приложений.