Метод addSteps является ключевым инструментом для
построения многошаговых интерактивных туров в интерфейсе. Он позволяет
определить последовательность шагов, которые будут отображаться
пользователю, а также настроить поведение каждого шага индивидуально. В
Shepherd.js каждый шаг — это объект с набором параметров, определяющих
содержимое, позиционирование, действия при переходе и внешний вид.
const tour = new Shepherd.Tour({
defaultStepOptions: {
cancelIcon: {
enabled: true
},
classes: 'shepherd-theme-arrows',
scrollTo: { beh * avior: 'smooth', block: 'center' }
}
});
tour.addSteps([
{
id: 'step-1',
text: 'Первый шаг вашего тура',
attachTo: { element: '#button1', on: 'bottom' },
buttons: [
{
text: 'Далее',
action: tour.next
}
]
},
{
id: 'step-2',
text: 'Второй шаг с описанием функции',
attachTo: { element: '#input1', on: 'right' },
buttons: [
{
text: 'Назад',
action: tour.back
},
{
text: 'Далее',
action: tour.next
}
]
}
]);
tour.start();
Каждый объект шага может содержать следующие ключевые свойства:
id – уникальный идентификатор шага. Обязателен для возможности управления шагами.
text – основной текст шага, который будет отображен в тултипе.
attachTo – объект, определяющий элемент DOM и позицию тултипа относительно него:
element – CSS-селектор или DOM-элемент, к которому
привязывается шаг.on – позиция тултипа: 'top',
'bottom', 'left', 'right'.buttons – массив кнопок управления. Каждая кнопка может иметь:
text – текст кнопки,action – функция или метод (tour.next,
tour.back, tour.cancel), который выполняется
при нажатии.scrollTo – настройки прокрутки страницы до элемента при отображении шага.
classes – CSS-классы для кастомизации внешнего вида тултипа.
advanceOn – событие, по которому шаг
автоматически переходит к следующему, например
{ selector: '#nextBtn', event: 'click' }.
addStepsМетод addSteps позволяет задавать массив шагов сразу,
что упрощает организацию тура и уменьшает количество вызовов
addStep. При необходимости каждый шаг можно модифицировать
после добавления через методы getById и
updateStepOptions:
const step2 = tour.getById('step-2');
step2.updateStepOptions({
text: 'Обновленный текст второго шага'
});
Это особенно полезно для динамических интерфейсов, где элементы появляются или исчезают после действий пользователя.
Shepherd.js предоставляет несколько методов для управления шагами:
complete.Можно комбинировать эти методы с кнопками шага или событиями DOM,
используя advanceOn для автоматического перехода:
{
id: 'step-3',
text: 'Этот шаг автоматически переходит по клику на кнопку',
attachTo: { element: '#submit', on: 'top' },
advanceOn: { selector: '#submit', event: 'click' }
}
Каждый шаг поддерживает настройку визуального оформления через
classes и scrollTo. Для глобальной настройки
можно использовать defaultStepOptions, которые применяются
ко всем шагам тура, что сокращает дублирование кода. Например, можно
задать общий стиль, включить иконку отмены, а также плавную прокрутку
страницы.
const tour = new Shepherd.Tour({
defaultStepOptions: {
classes: 'shepherd-theme-default custom-tour',
cancelIcon: { enabled: true },
scrollTo: { beh * avior: 'smooth', block: 'center' }
}
});
addSteps поддерживает генерацию шагов на лету. Можно
создавать массив шагов на основе данных или состояния интерфейса:
const stepsData = [
{ id: 'step-1', element: '#btn1', text: 'Нажмите здесь' },
{ id: 'step-2', element: '#input1', text: 'Заполните поле' }
];
const steps = stepsData.map(step => ({
id: step.id,
text: step.text,
attachTo: { element: step.element, on: 'bottom' },
buttons: [{ text: 'Далее', action: tour.next }]
}));
tour.addSteps(steps);
Такой подход делает addSteps универсальным инструментом
для интерфейсов с изменяющейся структурой или различными режимами
работы.
Каждый шаг поддерживает события:
show – при отображении шага,hide – при скрытии шага,complete – при завершении тура,cancel – при отмене тура.События можно использовать для логирования действий пользователя или триггеров в приложении:
tour.on('show', function() {
console.log('Шаг отображен');
});
Использование addSteps позволяет строить сложные,
интерактивные туры с полной управляемостью и кастомизацией поведения,
обеспечивая пользователю плавное и последовательное ознакомление с
интерфейсом.