Shepherd.js использует объект Tour для управления последовательностью шагов и отображением подсказок. Основным строительным блоком является класс Step, который инкапсулирует все параметры отдельного шага: его содержимое, позиционирование, кнопки управления и поведение при взаимодействии с пользователем.
Для создания нового шага используется метод addStep
объекта Tour:
const tour = new Shepherd.Tour({
defaultStepOptions: {
cancelIcon: {
enabled: true
},
classes: 'shepherd-theme-arrows',
scrollTo: { beh * avior: 'smooth', block: 'center' }
}
});
tour.addStep({
id: 'example-step',
text: 'Это пример шага с подсказкой.',
attachTo: {
element: '.example-element',
on: 'bottom'
},
buttons: [
{
text: 'Назад',
action: tour.back
},
{
text: 'Далее',
action: tour.next
}
]
});
Ключевые параметры Step:
id – уникальный идентификатор шага. Используется для навигации и модификации шагов.
text / title – текст или заголовок, отображаемый в подсказке. Можно использовать HTML.
attachTo – объект с параметрами привязки к элементу на странице:
element – CSS-селектор или DOM-элемент.on – позиция подсказки относительно элемента
(top, bottom, left,
right).buttons – массив кнопок управления шагом. Каждая
кнопка может иметь текст, CSS-классы и функцию действия
(action).
classes – CSS-классы, применяемые к подсказке, для кастомизации внешнего вида.
scrollTo – настройка прокрутки страницы к элементу.
Класс Step предоставляет ряд методов для управления поведением шага:
Пример динамического обновления текста:
const step = tour.getById('example-step');
step.updateStepOptions({
text: 'Новый текст подсказки для этого шага.'
});
Shepherd.js позволяет подписываться на события конкретного шага через объект events при его создании. Основные события:
Пример с обработкой события:
tour.addStep({
id: 'event-step',
text: 'Шаг с событием show.',
attachTo: { element: '.target', on: 'top' },
buttons: [{ text: 'Далее', action: tour.next }],
when: {
show: () => console.log('Шаг показан'),
hide: () => console.log('Шаг скрыт')
}
});
Шаги можно полностью стилизовать через:
Пример кастомного позиционирования:
tour.addStep({
id: 'custom-step',
text: 'Позиция с кастомным Popper.',
attachTo: { element: '.custom', on: 'right' },
popperOptions: {
modifiers: [
{
name: 'offset',
options: { offset: [0, 20] }
}
]
}
});
Каждый шаг может содержать несколько кнопок, каждая из которых выполняет отдельное действие:
action: tour.next – переход к следующему шагу.action: tour.back – возврат к предыдущему шагу.action: tour.complete – завершение всего тура.action: function – кастомная функция, выполняемая при
нажатии.buttons: [
{ text: 'Пропустить', action: tour.cancel, classes: 'shepherd-button-secondary' },
{ text: 'Вперёд', action: tour.next, classes: 'shepherd-button-primary' }
]
Класс Step поддерживает сложные сценарии:
beforeShowPromise –
позволяет асинхронно решать, показывать шаг или нет.Пример с асинхронной проверкой:
tour.addStep({
id: 'async-step',
text: 'Асинхронный шаг',
attachTo: { element: '.async', on: 'bottom' },
beforeShowPromise: () => {
return new Promise((resolve, reject) => {
if (document.querySelector('.async').offsetHeight > 0) {
resolve();
} else {
reject();
}
});
}
});
Использование классов для шагов в Shepherd.js обеспечивает полный контроль над визуальными элементами тура, их поведением и взаимодействием с пользователем, позволяя создавать гибкие, интерактивные и динамические подсказки для любого веб-приложения.