В библиотеке Shepherd.js шаг представляет собой базовую единицу интерактивного тура по веб-интерфейсу. Каждый шаг отвечает за отображение определённой информации пользователю, указание на элемент страницы и управление навигацией между другими шагами. Понимание структуры и возможностей шага является ключевым для эффективного построения обучающих туров.
Шаг создаётся с помощью метода addStep объекта тура
(Tour). Основная структура шага включает несколько
обязательных и опциональных параметров:
const tour = new Shepherd.Tour({
defaultStepOptions: {
classes: 'shepherd-theme-arrows',
scrollTo: true
}
});
tour.addStep({
id: 'example-step',
text: 'Это пример шага, который показывает подсказку на элементе.',
attachTo: {
element: '#my-element',
on: 'bottom'
},
buttons: [
{
text: 'Назад',
action: tour.back
},
{
text: 'Далее',
action: tour.next
}
]
});
on может быть
top, bottom, left,
right, а также сочетания вроде
top-start).next, back,
cancel и собственные функции).Shepherd.js автоматически рассчитывает положение подсказки относительно целевого элемента, учитывая размеры и видимую область. Основные параметры:
attachTo.element – CSS-селектор или DOM-элемент, к
которому привязывается подсказка.attachTo.on – положение относительно элемента. Можно
комбинировать направления (top-start,
bottom-end).advanceOn – событие, по которому шаг автоматически
продвигается, например:advanceOn: { selector: '#next-button', event: 'click' }
true, библиотека плавно перемещает видимую область к
цели.show,
hide, complete). Позволяет выполнять колбэки
при изменении состояния шага:when: {
show: () => console.log('Шаг показан'),
hide: () => console.log('Шаг скрыт')
}
true/false).Шаги могут генерироваться динамически в зависимости от состояния страницы или действий пользователя. Например, можно создавать шаги для элементов, которые появляются после AJAX-загрузки:
if (document.querySelector('#dynamic-element')) {
tour.addStep({
id: 'dynamic-step',
text: 'Этот элемент появился динамически!',
attachTo: { element: '#dynamic-element', on: 'right' },
buttons: [{ text: 'Далее', action: tour.next }]
});
}
Каждый шаг поддерживает встроенные методы навигации:
tour.next() – переход к следующему шагу.tour.back() – возврат к предыдущему шагу.tour.cancel() – завершение тура.tour.complete() – завершение тура с отметкой успешного
прохождения.Кнопки шага обычно вызывают эти методы, но можно добавлять и кастомные функции для сложных сценариев.
Шаг может содержать интерактивные элементы, такие как формы, ссылки или кнопки. Для улучшения UX используют:
modalOverlay: true – затемнение фона, чтобы
сфокусировать внимание на подсказке.canClickTarget: false – блокировка кликов по элементу
под подсказкой.highlightClass – CSS-класс для подсвечивания целевого
элемента.Shepherd.js предоставляет полный набор событий, которые позволяют отслеживать действия пользователя и изменять поведение тура на лету:
next или вручную.Пример подписки на событие:
tour.on('complete', () => console.log('Тур завершён'));
tour.on('show', (event) => console.log('Показан шаг:', event.step.id));
Шаги можно добавлять в любом порядке, но порядок навигации
определяется последовательностью их добавления и методами
next/back. Shepherd.js поддерживает:
scrollTo: true, чтобы подсказки всегда были видимыми.show и hide позволяют
оптимизировать создание контента, например, загружать данные только при
отображении шага.Шаг в Shepherd.js — это не просто подсказка, а структурированный элемент интерактивного обучения, сочетающий визуальное выделение, навигацию и управление пользовательским взаимодействием. Понимание всех его возможностей и параметров позволяет создавать гибкие и динамичные туры с любым уровнем сложности.