Shepherd.js представляет собой мощную библиотеку для создания интерактивных туров по веб-приложениям. Тур состоит из последовательности шагов (steps), каждый из которых связан с определённым элементом интерфейса и содержит текстовые подсказки, действия и настройки визуализации.
Создание тура начинается с инициализации объекта
Shepherd.Tour:
const tour = new Shepherd.Tour({
defaultStepOptions: {
cancelIcon: { enabled: true },
classes: 'shepherd-theme-arrows',
scrollTo: { beh * avior: 'smooth', block: 'center' }
},
useModalOverlay: true
});
Здесь ключевыми моментами являются:
Каждый шаг создаётся через метод addStep:
tour.addStep({
id: 'intro-step',
text: 'Это главный элемент интерфейса.',
attachTo: { element: '#main-button', on: 'bottom' },
buttons: [
{ text: 'Назад', action: tour.back, classes: 'shepherd-button-secondary' },
{ text: 'Далее', action: tour.next, classes: 'shepherd-button-primary' }
]
});
Ключевые элементы шага:
top,
bottom, left, right).next, back, cancel) или
выполняющих пользовательские действия.Навигация между шагами может быть линейной или ветвящейся. Для
сложных сценариев используются методы tour.next(),
tour.back(), а также пользовательские обработчики
событий.
Shepherd.js поддерживает динамическое управление видимостью шагов с помощью условий и событий. Пример: шаг показывается только после выполнения определённого действия пользователя.
tour.addStep({
id: 'conditional-step',
text: 'Теперь можно перейти к следующему действию.',
attachTo: { element: '#feature', on: 'right' },
buttons: [{ text: 'Далее', action: tour.next }],
when: {
show: () => {
const isFeatureReady = document.querySelector('#feature').dataset.ready === 'true';
if (!isFeatureReady) {
tour.cancel();
}
}
}
});
Особенности использования событий:
Эти события позволяют внедрять логику проверки состояния интерфейса, запускать анимации и управлять пользовательским опытом.
Shepherd.js поддерживает кастомизацию стилей через CSS-классы, темы и модальные наложения.
.shepherd-theme-arrows {
background-color: #f5f5f5;
border-radius: 8px;
padding: 12px;
color: #333;
box-shadow: 0 2px 10px rgba(0,0,0,0.2);
}
.shepherd-button-primary {
background-color: #007bff;
color: white;
}
.shepherd-button-secondary {
background-color: #6c757d;
color: white;
}
Shepherd.js легко интегрируется с React, Vue и Angular. Для React используется обёртка вокруг компонента:
import { ShepherdTour, ShepherdTourContext } from 'react-shepherd';
const tourOptions = { defaultStepOptions: { scrollTo: true } };
const steps = [
{ id: 'step1', text: 'Первый шаг', attachTo: { element: '#step1', on: 'bottom' } },
{ id: 'step2', text: 'Второй шаг', attachTo: { element: '#step2', on: 'top' } }
];
<ShepherdTour steps={steps} tourOptions={tourOptions}>
<App />
</ShepherdTour>
Эта интеграция обеспечивает реактивность компонентов и автоматическое обновление шагов при изменении DOM.
Эти подходы делают туры быстрыми, плавными и удобными для пользователя.