В Shepherd.js modal overlay представляет собой инструмент, который позволяет затемнять весь экран кроме области, на которую указывает текущий шаг тура. Это создаёт эффект фокусировки на конкретном элементе интерфейса и повышает удобство интерактивных инструкций.
Подключение и базовая инициализация:
import Shepherd from 'shepherd.js';
import 'shepherd.js/dist/css/shepherd.css';
const tour = new Shepherd.Tour({
defaultStepOptions: {
classes: 'shepherd-theme-arrows',
scrollTo: true,
modalOverlayOpeningPadding: 10 // отступ вокруг выделяемого элемента
},
useModalOverlay: true // включение modal overlay
});
Здесь ключевой момент — параметр useModalOverlay: true.
Он активирует затемнение фона. Параметр
modalOverlayOpeningPadding задаёт отступ между границей
выделяемого элемента и затемнённой областью, что позволяет избежать
“слипания” подсказки с краями элемента.
Каждый шаг, который должен использовать modal overlay, можно
настроить с помощью свойства highlightClass или
attachTo.
tour.addStep({
id: 'step-1',
text: 'Это первый шаг тура.',
attachTo: {
element: '#buttonStart',
on: 'bottom'
},
highlightClass: 'shepherd-highlight-custom',
buttons: [
{
text: 'Далее',
action: tour.next
}
]
});
attachTo — указывает элемент, на
котором будет фокус.highlightClass — позволяет задать
кастомный стиль для подсветки элемента, например с рамкой или
тенью.Важно: если highlightClass не указан, Shepherd
автоматически создаёт базовый highlight.
Modal overlay в Shepherd.js можно кастомизировать с помощью CSS.
Стандартный слой имеет класс
.shepherd-modal-overlay-container. Пример кастомизации:
.shepherd-modal-overlay-container {
background-color: rgba(0, 0, 0, 0.6); /* прозрачный тёмный фон */
transition: background-color 0.3s ease;
z-index: 1000;
}
.shepherd-highlight-custom {
box-shadow: 0 0 0 5px rgba(255, 255, 0, 0.7); /* желтая подсветка */
border-radius: 6px;
}
background-color регулирует степень
затемнения.box-shadow и
border-radius обеспечивают акцент на
элементе, улучшая визуальное выделение.Shepherd позволяет изменять свойства overlay на лету. Например, можно программно скрыть overlay для определённого шага:
tour.addStep({
id: 'step-2',
text: 'Шаг без overlay',
useModalOverlay: false,
attachTo: {
element: '#infoPanel',
on: 'right'
},
buttons: [
{
text: 'Назад',
action: tour.back
},
{
text: 'Далее',
action: tour.next
}
]
});
Каждый шаг может индивидуально переопределять глобальные настройки тура, что позволяет создавать гибкие сценарии, комбинируя шаги с overlay и без него.
Modal overlay поддерживает события, которые позволяют реагировать на его открытие или закрытие. Основные события:
tour.on('show', (step) => {
if (step.options.useModalOverlay) {
console.log('Overlay активен для этого шага');
}
});
tour.on('hide', (step) => {
console.log('Overlay скрыт');
});
События можно использовать для динамической анимации подсветки, изменения стилей элементов или логирования действий пользователя.
Overlay автоматически подстраивается под attachTo
элемент. Однако, при сложной верстке, например при fixed или sticky
элементах, рекомендуется использовать:
modalOverlayOpeningPadding для увеличения отступаscrollTo: true для корректного прокручивания страницы к
элементуconst tour = new Shepherd.Tour({
defaultStepOptions: {
scrollTo: { beh * avior: 'smooth', block: 'center' },
modalOverlayOpeningPadding: 15
},
useModalOverlay: true
});
Это предотвращает сдвиг подсказки за пределы видимой области экрана.
Modal overlay в Shepherd.js обеспечивает мощный инструмент для создания интерактивных, фокусированных инструкций, позволяя точно управлять визуальным акцентом, стилями и поведением каждого шага тура.