Shepherd.js использует слои DOM для отображения подсказок, модальных
окон и оверлеев, что делает управление z-index критически
важным для корректного отображения элементов на странице. По умолчанию
библиотека устанавливает значения z-index для тултипов,
оверлеев и кнопок навигации, но в сложных интерфейсах с другими
всплывающими элементами часто требуется их тонкая настройка.
.shepherd-step, который
позиционируется поверх контента страницы. Его значение
z-index по умолчанию равно 1000..shepherd-modal-overlay-container используется для
затемнения фона при модальном туре. Его z-index по
умолчанию выше, чем у стандартного шага (обычно 2000),
чтобы перекрывать интерактивные элементы страницы..shepherd-content
наследует z-index от шага и может быть дополнительно
настроен через CSS или опции Shepherd.Эти значения гарантируют, что шаги тура видимы поверх большинства элементов, но в случае наличия сторонних всплывающих окон, модальных окон или кастомных тултипов, может потребоваться переопределение.
Shepherd.js позволяет задать z-index индивидуально для
каждого шага через свойство attachTo и CSS-классы:
const tour = new Shepherd.Tour({
useModalOverlay: true,
defaultStepOptions: {
classes: 'custom-step',
scrollTo: { beh * avior: 'smooth', block: 'center' },
}
});
tour.addStep({
id: 'example-step',
text: 'Пример шага с кастомным z-index',
attachTo: { element: '.target-element', on: 'bottom' },
classes: 'custom-z-index',
buttons: [
{
text: 'Далее',
action: tour.next
}
]
});
tour.start();
В CSS можно задать конкретное значение z-index:
.custom-z-index {
z-index: 3000 !important;
}
Использование !important рекомендуется только в случае
конфликта с другими слоями, поскольку Shepherd.js динамически управляет
стилями через встроенные классы.
Для единообразного управления всеми шагами тура можно использовать
defaultStepOptions.classes с общим классом и задать
z-index через CSS:
const tour = new Shepherd.Tour({
defaultStepOptions: {
classes: 'global-z-index',
scrollTo: true
}
});
.global-z-index {
z-index: 1500;
}
Это позволяет избежать повторного назначения z-index для
каждого шага.
Если используется модальный оверлей
(useModalOverlay: true), значение z-index
оверлея задается отдельным классом
.shepherd-modal-overlay-container. По умолчанию его
z-index выше, чем у шагов, что гарантирует блокировку
взаимодействия с элементами страницы:
.shepherd-modal-overlay-container {
z-index: 2500;
}
Важно учитывать, что шаги должны иметь z-index меньше
оверлея, иначе часть контента тура может оказаться скрытой за модальным
фоном.
Для сложных интерфейсов можно изменять z-index на лету
через события Shepherd:
tour.on('show', function(step) {
const stepElement = step.el;
stepElement.style.zIndex = 3500;
});
Это позволяет контролировать порядок отображения при перекрытии
сторонних всплывающих окон или меню с высоким z-index.
z-index для целой группы шагов сразу.show, hide и active позволяют
изменять z-index в зависимости от состояния страницы.const tour = new Shepherd.Tour({
useModalOverlay: true,
defaultStepOptions: {
classes: 'tour-step-global',
scrollTo: true
}
});
tour.addStep({
id: 'first',
text: 'Первый шаг',
attachTo: { element: '.first-target', on: 'top' }
});
tour.addStep({
id: 'second',
text: 'Второй шаг с более высоким z-index',
attachTo: { element: '.second-target', on: 'bottom' },
classes: 'tour-step-global high-z-index'
});
.tour-step-global {
z-index: 1500;
}
.high-z-index {
z-index: 3000;
}
.shepherd-modal-overlay-container {
z-index: 2500;
}
Такой подход обеспечивает предсказуемое поведение всех элементов тура вне зависимости от структуры страницы и сторонних модальных окон.
Эта методика позволяет полностью контролировать порядок отображения подсказок, оверлеев и элементов навигации Shepherd.js, обеспечивая стабильное взаимодействие с любыми слоями интерфейса.