Shepherd.js предоставляет встроенные возможности управления пошаговыми руководствами с помощью клавиатуры. Это критически важно для улучшения доступности (accessibility) интерфейса и обеспечения удобства использования для пользователей, которые не могут использовать мышь. Навигация с клавиатуры включает обработку клавиш Tab, Enter, Escape, а также стрелок для перемещения между шагами тура.
Каждый шаг Shepherd определяется объектом с конфигурацией, где можно настроить поведение при взаимодействии с клавиатурой:
const tour = new Shepherd.Tour({
defaultStepOptions: {
cancelIcon: {
enabled: true
},
keyboardNavigation: true
}
});
tour.addStep({
id: 'intro',
text: 'Добро пожаловать в тур!',
buttons: [
{
text: 'Далее',
action: tour.next
}
]
});
Ключевые моменты:
keyboardNavigation: true — включает
возможность перемещаться между шагами с помощью клавиш
Tab, Enter,
Arrow.cancelIcon.enabled: true — добавляет
крестик для отмены шага, который также можно активировать клавишей
Escape.Shepherd.js позволяет настраивать реакции на конкретные клавиши через
объект keyboardNavigation. Можно определить собственные
обработчики для событий нажатия:
tour.addStep({
id: 'custom-keyboard',
text: 'Используйте стрелки для перемещения.',
keyboardNavigation: {
next: ['ArrowRight', 'Enter'],
prev: ['ArrowLeft'],
cancel: ['Escape']
}
});
next — массив клавиш, которые
продвигают тур к следующему шагу.prev — клавиши для возврата к
предыдущему шагу.cancel — клавиши, которые закрывают
текущий шаг.Это позволяет гибко адаптировать тур под интерфейс приложения и привычки пользователей.
Shepherd автоматически управляет фокусом на интерактивных элементах кнопок внутри шага. При включённой навигации клавиатурой:
Можно вручную управлять фокусом через параметр
attachTo:
tour.addStep({
id: 'focus-input',
text: 'Введите данные в поле.',
attachTo: {
element: '#username',
on: 'bottom'
},
when: {
show: () => {
document.querySelector('#username').focus();
}
}
});
Shepherd.js использует объект action для каждой кнопки шага. При использовании клавиатуры активируется кнопка, на которой находится фокус. Основные действия:
tour.next — переход к следующему
шагу.tour.back — возврат к предыдущему
шагу.tour.cancel — завершение тура.tour.complete — завершение тура с
выполнением всех шагов.Пример:
buttons: [
{
text: 'Назад',
action: tour.back
},
{
text: 'Далее',
action: tour.next
},
{
text: 'Закрыть',
action: tour.cancel
}
]
Shepherd.js поддерживает глобальные события на уровне тура:
show — вызывается при отображении
шага, можно устанавливать фокус.complete — выполняется после
завершения тура.cancel — вызывается при прерывании
тура.active — срабатывает при активации
шага.Пример кастомного поведения при нажатии клавиши:
tour.on('active', (event) => {
document.addEventListener('keydown', (e) => {
if (e.key === 'F1') {
tour.next();
}
});
});
Shepherd.js предоставляет полный набор инструментов для реализации клавиатурной навигации: от базового управления шагами через Tab/Enter/Escape до кастомных обработчиков конкретных клавиш. Грамотно настроенная навигация обеспечивает доступность и повышает UX любого веб-приложения.