Shepherd.js предоставляет мощный и гибкий инструмент для создания
интерактивных туров на веб-страницах. Один из ключевых аспектов —
возможность управлять модальными оверлеями, которые затемняют фон и
фокусируют внимание пользователя на активном шаге тура. Для этого
используется хук useModalOverlay, предоставляемый
библиотекой.
Для использования useModalOverlay необходимо
импортировать его из Shepherd:
import { ShepherdTour, useModalOverlay } from 'shepherd.js';
Создание нового тура с модальным оверлеем осуществляется следующим образом:
const tour = new ShepherdTour({
defaultStepOptions: {
cancelIcon: {
enabled: true
},
scrollTo: { beh * avior: 'smooth', block: 'center' }
},
useModalOverlay: true
});
Включение useModalOverlay: true автоматически активирует
затемнение фона и добавляет возможность клика по оверлею для закрытия
шага.
useModalOverlay позволяет управлять поведением оверлея
через дополнительные параметры. Основные опции:
className — CSS-класс для кастомизации
стиля оверлея.clickOutsideToClose — закрытие шага
при клике вне активного элемента.escapeToClose — возможность закрытия
оверлея через клавишу Escape.canClickTarget — позволяет
пользователю взаимодействовать с элементами под оверлеем.Пример настройки:
tour.useModalOverlay({
className: 'custom-overlay',
clickOutsideToClose: true,
escapeToClose: true,
canClickTarget: false
});
В этом примере создаётся затемнение с кастомным CSS-классом
custom-overlay, шаг закрывается при клике вне выделенного
элемента, но взаимодействие с элементами под оверлеем запрещено.
Каждый шаг тура можно настроить отдельно, включая управление оверлеем:
tour.addStep({
id: 'example-step',
text: 'Этот шаг демонстрирует работу модального оверлея.',
attachTo: {
element: '.target-element',
on: 'bottom'
},
buttons: [
{
text: 'Next',
action: tour.next
}
],
useModalOverlay: true
});
Включение useModalOverlay на уровне шага позволяет
показывать оверлей только для конкретного шага, что полезно при сложных
турах с несколькими сценариями.
Для полного контроля внешнего вида оверлея используется CSS. Основные элементы:
.shepherd-modal-overlay-container {
background-color: rgba(0, 0, 0, 0.7);
transition: opacity 0.3s ease-in-out;
}
.custom-overlay {
background-color: rgba(50, 50, 50, 0.6);
border-radius: 8px;
}
.shepherd-modal-overlay-container — стандартный
контейнер оверлея..custom-overlay — класс, переданный в параметре
className.Использование CSS-переопределений позволяет контролировать прозрачность, цвет, тени и анимацию появления.
Параметр canClickTarget определяет, будут ли элементы
под оверлеем интерактивными:
tour.useModalOverlay({
canClickTarget: true
});
true — позволяет взаимодействовать с кнопками и
ссылками под затемнением.false — блокирует любые клики, обеспечивая полный фокус
на шаге тура.Такой контроль необходим для шагов, где пользователь должен сконцентрироваться на инструкции, а не на интерфейсе под оверлеем.
useModalOverlay можно активировать и деактивировать в
ходе выполнения тура:
const overlay = tour.useModalOverlay();
overlay.show(); // Показать оверлей
overlay.hide(); // Скрыть оверлей
Это удобно для сложных сценариев, где шаги с оверлеем чередуются с обычными шагами без затемнения.
Для плавного отображения оверлея можно использовать CSS-переходы и
добавить класс shepherd-modal-overlay-fade:
.shepherd-modal-overlay-fade {
opacity: 0;
transition: opacity 0.5s ease;
}
.shepherd-modal-overlay-fade.shepherd-modal-overlay-container--visible {
opacity: 1;
}
.shepherd-modal-overlay-container--visible добавляется
автоматически при показе оверлея.Shepherd.js поддерживает один активный оверлей за раз. Для имитации
нескольких слоёв создаются кастомные элементы поверх основного оверлея,
но при этом следует учитывать z-index и блокировку
кликов:
const extraOverlay = document.createElement('div');
extraOverlay.classList.add('extra-overlay');
document.body.appendChild(extraOverlay);
Это полезно для визуализации сложных инструкций с несколькими выделенными областями.
useModalOverlayclickOutsideToClose только на простых
шагах, чтобы случайные клики не прерывали сложный сценарий.canClickTarget с шагами, где пользователю
нужно взаимодействовать с формами или кнопками.useModalOverlay — мощный инструмент для полного контроля
над визуальной презентацией шагов в Shepherd.js. Его гибкость позволяет
создавать как простые затемнённые подсказки, так и сложные интерактивные
туры с кастомными эффектами и точным управлением поведением
пользователя.