Shepherd.js предоставляет возможность создавать пошаговые интерактивные туры по веб-приложению. Одной из ключевых особенностей является гибкая настройка анимаций и переходов между шагами, что делает тур более плавным и визуально привлекательным.
Каждый шаг создается с помощью объекта конфигурации, где можно задать следующие параметры, влияющие на анимацию:
scrollTo – объект или булевое
значение, определяющее автоматическую прокрутку к элементу.
Например:scrollTo: { beh * avior: 'smooth', block: 'center' }
attachTo – объект с указанием
селектора и позиции тултипа относительно элемента. При изменении позиции
тултипа можно создавать эффект смещения или «вылазки»:attachTo: { element: '#button', on: 'bottom' }
classes – CSS-классы, применяемые к
шагу. Через них можно добавить пользовательские анимации с
использованием CSS-переходов и keyframes.classes: 'shepherd-theme-arrows fade-in'
Shepherd.js позволяет полностью контролировать визуальные эффекты через CSS. Можно определить fade-in, slide, scale и другие переходы для появления и скрытия шагов.
.shepherd-theme-arrows.fade-in {
animation: fadeIn 0.5s ease-in-out forwards;
}
@keyframes fadeIn {
from { opacity: 0; transform: translateY(-10px); }
to { opacity: 1; transform: translateY(0); }
}
Для скрытия шага можно использовать CSS-анимацию fadeOut
и применять её через событие before-hide:
step.on('before-hide', () => {
step.el.classList.add('fade-out');
});
Shepherd.js обеспечивает события жизненного цикла шага, которые позволяют управлять анимацией между шагами:
show – вызывается при отображении
шага, здесь можно запускать анимацию появления.hide – вызывается при скрытии шага,
идеально для анимаций выхода.complete – используется для
финализации анимаций перед переходом к следующему шагу.Пример плавного перехода между шагами:
tour.addStep({
id: 'step1',
text: 'Это первый шаг',
attachTo: { element: '#start', on: 'top' },
classes: 'fade-slide'
});
tour.addStep({
id: 'step2',
text: 'Это второй шаг',
attachTo: { element: '#next', on: 'right' },
beforeShowPromise: () => new Promise(resolve => {
setTimeout(resolve, 300); // пауза перед показом второго шага
})
});
Shepherd.js совместим с библиотеками вроде GSAP или Anime.js, что позволяет создавать сложные переходы и эффекты:
step.on('show', () => {
gsap.from(step.el, { opacity: 0, y: -20, duration: 0.5 });
});
step.on('hide', () => {
gsap.to(step.el, { opacity: 0, y: 20, duration: 0.5 });
});
Использование таких библиотек открывает возможность анимировать не только тултип, но и фоновые затемнения, стрелки и другие элементы интерфейса.
beforeShowPromise или delay.show,
hide) позволяют синхронизировать несколько анимаций
одновременно, например, изменение позиции и плавное появление
текста.step.on('show', () => {
gsap.to(step.el, { opacity: 1, x: 0, duration: 0.6 });
gsap.to('#highlight', { scale: 1.2, duration: 0.6 });
});
Shepherd.js поддерживает плавную прокрутку к целевому элементу. По
умолчанию используется стандартный scrollIntoView, но можно
настроить собственную анимацию:
scrollTo: {
beh * avior: 'smooth',
block: 'center',
inline: 'nearest'
}
Для более сложных случаев интегрируют сторонние анимации прокрутки через GSAP ScrollToPlugin или аналогичные решения.
attachTo для позиции тултипа.show,
hide, before-hide) для запуска анимаций.Эти механизмы позволяют создавать плавные, профессиональные интерактивные туры, которые органично вписываются в интерфейс и не отвлекают пользователя от основного контента.