Библиотека Shepherd.js предоставляет гибкий механизм настройки через объект параметров (options), используемый при создании тура и отдельных шагов. Options API определяет поведение, внешний вид и логику взаимодействия с пользователем.
Ключевые точки применения:
new Shepherd.Tour(options))tour.addStep(options))При инициализации тура объект options задаёт поведение по умолчанию для всех шагов.
defaultStepOptionsОпределяет базовые настройки, применяемые ко всем шагам, если они не переопределены локально.
const tour = new Shepherd.Tour({
defaultStepOptions: {
cancelIcon: { enabled: true },
classes: 'shepherd-theme-arrows',
scrollTo: true
}
});
Ключевые свойства:
cancelIcon — управление кнопкой закрытияclasses — CSS-классы для стилизацииscrollTo — автопрокрутка к элементуuseModalOverlayДобавляет затемнение остальной части интерфейса, фокусируя внимание на активном шаге.
useModalOverlay: true
Особенности:
exitOnEscОпределяет, можно ли закрыть тур клавишей Escape.
exitOnEsc: true
keyboardNavigationУправление переходами с помощью клавиатуры.
keyboardNavigation: true
Поддержка:
Каждый шаг тура конфигурируется отдельно и может переопределять глобальные настройки.
tour.addStep({
id: 'example-step',
text: 'Описание шага',
attachTo: { element: '.btn', on: 'bottom' }
});
idУникальный идентификатор шага.
id: 'step-1'
Используется для:
tour.show('step-1'))textКонтент шага. Поддерживает:
text: 'Нажмите сюда для продолжения'
или
text: () => document.createElement('div')
attachToПривязка шага к элементу DOM.
attachTo: {
element: '.selector',
on: 'right'
}
Параметры:
element — CSS-селектор или DOM-узелon — позиция (top, bottom, left, right, auto)Если элемент отсутствует:
buttonsМассив кнопок управления.
buttons: [
{
text: 'Назад',
action: tour.back
},
{
text: 'Далее',
action: tour.next
}
]
Свойства кнопки:
text — текстaction — функцияclasses — CSS-классыsecondary — вторичный стильadvanceOnАвтоматический переход при событии.
advanceOn: {
selector: '.btn',
event: 'click'
}
Полезно для:
beforeShowPromiseАсинхронная логика перед показом шага.
beforeShowPromise: () => {
return new Promise(resolve => {
setTimeout(resolve, 500);
});
}
Применение:
scrollToНастройка прокрутки к элементу.
scrollTo: {
beh * avior: 'smooth',
block: 'center'
}
или просто:
scrollTo: true
highlightClassДобавляет CSS-класс к целевому элементу.
highlightClass: 'highlighted'
Используется для:
canClickTargetРазрешает или запрещает взаимодействие с элементом.
canClickTarget: false
cancelIconНастройка кнопки закрытия.
cancelIcon: {
enabled: true,
label: 'Закрыть'
}
classesДополнительные CSS-классы для шага.
classes: 'custom-tooltip'
Shepherd использует Popper.js для позиционирования элементов. Через Options API можно передавать дополнительные настройки.
popperOptionspopperOptions: {
modifiers: [
{
name: 'offset',
options: {
offset: [0, 10]
}
}
]
}
Позволяет:
whenПозволяет реагировать на события жизненного цикла шага.
when: {
show: () => console.log('Шаг показан'),
hide: () => console.log('Шаг скрыт')
}
Доступные события:
showhidecancelcompletescrollToHandlerКастомная функция прокрутки:
scrollToHandler: (element) => {
element.scrollIntoView({ beh * avior: 'smooth' });
}
Options API позволяет учитывать динамически появляющиеся элементы через комбинацию:
beforeShowPromiseattachToadvanceOnПример:
tour.addStep({
attachTo: { element: '.dynamic', on: 'bottom' },
beforeShowPromise: () => waitForElement('.dynamic')
});
Любой параметр из defaultStepOptions может быть
переопределён на уровне шага:
tour.addStep({
text: 'Особый шаг',
scrollTo: false
});
Options API позволяет гибко комбинировать настройки:
tour.addStep({
id: 'complex-step',
text: 'Сложный шаг',
attachTo: { element: '.item', on: 'left' },
scrollTo: { beh * avior: 'smooth' },
highlightClass: 'focus',
buttons: [
{ text: 'Назад', action: tour.back },
{ text: 'Далее', action: tour.next }
],
when: {
show: () => console.log('start'),
hide: () => console.log('end')
}
});
1. Обучающий тур интерфейса
useModalOverlayhighlightClassscrollTo2. Интерактивный onboarding
advanceOnbeforeShowPromise3. Контекстные подсказки
attachToclasses4. Асинхронные интерфейсы
beforeShowPromiseOptions API тесно связан с методами экземпляра тура:
tour.next()tour.back()tour.show(id)tour.cancel()Кнопки и события внутри options напрямую используют эти методы, формируя поведение приложения.
При построении сложных интерфейсов Options API используется как слой конфигурации:
defaultStepOptionsПример генерации:
const createStep = (selector, text) => ({
attachTo: { element: selector, on: 'bottom' },
text
});
Рекомендуемый подход:
defaultStepOptionsbeforeShowPromiseТакой подход делает код: