Shepherd.js — это библиотека для создания интерактивных пошаговых подсказок и туров по интерфейсу веб-приложений. Для её использования необходимо установить библиотеку через npm или подключить через CDN.
Установка через npm:
npm install shepherd.js
Подключение через CDN:
<link rel="stylesheet" href="https://unpkg.com/shepherd.js/dist/css/shepherd.css">
<script src="https://unpkg.com/shepherd.js/dist/js/shepherd.min.js"></script>
После подключения CSS и JS можно создавать туры, управлять шагами и настраивать интерфейс подсказок.
Тур создаётся через объект Shepherd.Tour, в котором
задаются глобальные настройки:
const tour = new Shepherd.Tour({
defaultStepOptions: {
cancelIcon: {
enabled: true
},
scrollTo: { beh * avior: 'smooth', block: 'center' }
},
useModalOverlay: true
});
Ключевые настройки:
defaultStepOptions — конфигурация, применяемая ко всем
шагам по умолчанию.cancelIcon — добавляет кнопку закрытия подсказки.scrollTo — автоматически скроллит страницу к элементу,
к которому привязана подсказка.useModalOverlay — затемняет фон за подсказкой для
лучшей фокусировки пользователя.Каждый шаг добавляется методом addStep и включает
привязку к элементу, текст подсказки и кнопки навигации.
tour.addStep({
id: 'step1',
text: 'Это главное меню приложения.',
attachTo: {
element: '#main-menu',
on: 'bottom'
},
buttons: [
{
text: 'Назад',
action: tour.back
},
{
text: 'Далее',
action: tour.next
}
]
});
Особенности настройки шага:
id — уникальный идентификатор шага.text — текст подсказки. Можно использовать
HTML-разметку.attachTo — объект, определяющий элемент и позицию
подсказки (top, bottom, left,
right).buttons — массив кнопок, каждая с текстом и действием
(tour.next, tour.back,
tour.complete).Shepherd.js позволяет изменять стиль подсказок через CSS или использовать встроенные классы.
Пример использования кастомного класса:
tour.addStep({
id: 'step2',
text: 'Панель инструментов с дополнительными функциями.',
attachTo: { element: '#toolbar', on: 'top' },
classes: 'custom-shepherd-step',
buttons: [
{ text: 'Далее', action: tour.next }
]
});
Возможные классы и стили:
shepherd-theme-arrows — подсказка со стрелкой.shepherd-theme-default — стандартная подсказка.custom-shepherd-step — можно создать собственный класс
в CSS для изменения цвета, шрифта, размеров кнопок..custom-shepherd-step {
background-color: #2c3e50;
color: #ecf0f1;
font-size: 16px;
}
Shepherd.js поддерживает несколько методов навигации:
tour.start() — запуск тура с первого шага.tour.next() — переход к следующему шагу.tour.back() — возврат к предыдущему шагу.tour.complete() — завершение тура.tour.cancel() — принудительное прерывание тура.Можно также подписываться на события:
tour.on('start', () => console.log('Тур начался'));
tour.on('complete', () => console.log('Тур завершён'));
tour.on('cancel', () => console.log('Тур отменён'));
События позволяют синхронизировать тур с другими инструментами разработчика, например, логированием действий пользователя.
Шаги можно создавать на лету, исходя из состояния приложения или взаимодействия пользователя:
const dynamicStep = {
id: 'dynamic',
text: 'Элемент появился динамически!',
attachTo: { element: '#dynamic-element', on: 'right' },
buttons: [{ text: 'Далее', action: tour.next }]
};
if (document.querySelector('#dynamic-element')) {
tour.addStep(dynamicStep);
}
Shepherd.js хорошо сочетается с:
tour.start()
напрямую для тестирования.tour.on('show', callback)).tour.on('show', (event) => {
console.log(`Показан шаг: ${event.step.id}`);
});
attachTo. Ошибка
приведёт к некорректному позиционированию.useModalOverlay для фокусировки внимания
на текущем элементе.MutationObserver или события интерфейса.tour.on для отслеживания
проблем и последовательности шагов.const tour = new Shepherd.Tour({
defaultStepOptions: {
scrollTo: true,
cancelIcon: { enabled: true }
},
useModalOverlay: true
});
tour.addStep({
id: 'menu',
text: 'Главное меню приложения.',
attachTo: { element: '#main-menu', on: 'bottom' },
buttons: [
{ text: 'Далее', action: tour.next }
]
});
tour.addStep({
id: 'toolbar',
text: 'Панель инструментов для работы с документами.',
attachTo: { element: '#toolbar', on: 'top' },
buttons: [
{ text: 'Назад', action: tour.back },
{ text: 'Далее', action: tour.next }
]
});
tour.addStep({
id: 'footer',
text: 'Здесь расположены дополнительные настройки.',
attachTo: { element: '#footer', on: 'top' },
buttons: [
{ text: 'Назад', action: tour.back },
{ text: 'Завершить', action: tour.complete }
]
});
tour.start();
Этот пример демонстрирует создание последовательного тура с несколькими шагами, кнопками навигации и автоматической прокруткой к элементам.