Класс Step является центральным элементом в создании интерактивных пошаговых туров с использованием библиотеки Shepherd.js. Каждый объект Step представляет собой отдельный шаг в туре, отвечающий за отображение подсказки, позиционирование на странице и обработку действий пользователя.
Объект Step создается через конструктор Shepherd.Step с
передачей конфигурационного объекта:
const step = new Shepherd.Step(tour, {
id: 'intro-step',
text: 'Добро пожаловать в наш тур!',
attachTo: {
element: '.header-logo',
on: 'bottom'
},
buttons: [
{
text: 'Далее',
action: tour.next
}
]
});
Ключевые параметры:
id — уникальный идентификатор шага. Используется для
ссылки на конкретный шаг.
text — содержимое подсказки. Может быть строкой или
функцией, возвращающей строку.
attachTo — объект, определяющий элемент DOM и
позицию подсказки относительно него:
element — селектор или объект HTMLElement.on — позиция подсказки (top,
bottom, left, right и их вариации
с start/end).buttons — массив объектов кнопок, каждая кнопка
может выполнять действия, например, tour.next(),
tour.back() или кастомные функции.
show() Отображает текущий шаг. Можно
вызвать вручную, если требуется контроль над последовательностью:step.show();
hide() Скрывает текущую подсказку без
удаления шага из тура:step.hide();
destroy() Удаляет шаг полностью,
освобождая ресурсы и DOM-элементы:step.destroy();
updateStepOptions(options) Позволяет
динамически изменять конфигурацию шага:step.updateStepOptions({
text: 'Обновленный текст подсказки',
buttons: [{ text: 'Закрыть', action: tour.complete }]
});
complete() Помечает шаг как
завершенный, вызывая все связанные с этим события:step.complete();
cancel() Отменяет шаг, вызывая события
отмены:step.cancel();
Параметр attachTo контролирует, к какому элементу
привязана подсказка и где она отображается относительно элемента.
Поддерживаются следующие позиции:
top, top-start, top-endbottom, bottom-start,
bottom-endleft, left-start,
left-endright, right-start,
right-endНапример:
attachTo: {
element: '#menu-button',
on: 'right'
}
Если элемент отсутствует в DOM в момент показа шага, библиотека автоматически пытается отложить отображение до его появления.
Step поддерживает систему событий для гибкого управления поведением:
show — вызывается при отображении шага.hide — вызывается при скрытии шага.complete — вызывается при завершении шага.cancel — вызывается при отмене шага.Пример подписки на события:
step.on('show', () => {
console.log('Шаг отображен');
});
step.on('complete', () => {
console.log('Шаг завершен');
});
Step позволяет полностью настраивать внешний вид подсказок через CSS-классы и опции темы:
classes — добавляет CSS-классы к контейнеру шага.scrollTo — определяет поведение прокрутки страницы до
элемента (true, false или объект с
опциями).modalOverlayOpeningPadding — отступ для модального
оверлея вокруг элемента.Пример:
const step = new Shepherd.Step(tour, {
id: 'custom-step',
text: 'Пользовательский стиль шага',
classes: 'custom-step highlight',
scrollTo: { beh * avior: 'smooth', block: 'center' }
});
Кнопки шага создаются через массив объектов с ключами:
text — текст на кнопке.action — функция или метод шага/тура, который будет
вызван.classes — CSS-классы кнопки для стилизации.Пример кнопки для перехода к следующему шагу:
{
text: 'Далее',
action: tour.next,
classes: 'shepherd-button-primary'
}
Step поддерживает динамическое создание и обновление шагов во время выполнения тура. Это полезно, когда элементы интерфейса создаются асинхронно:
tour.addStep({
id: 'dynamic-step',
text: () => document.querySelector('#status').textContent,
attachTo: { element: '#status', on: 'top' }
});
Использование функций для параметров позволяет шагам автоматически адаптироваться к текущему состоянию DOM.
id для каждого шага.attachTo для точного позиционирования
подсказок.updateStepOptions() для динамического
изменения шага.show, complete и
cancel для контроля поведения.tour.next() и
tour.back() для последовательной навигации.Step является основным строительным блоком Shepherd.js, позволяя создавать гибкие, интерактивные и адаптивные туры по интерфейсу.