Одной из наиболее частых проблем при использовании
Intro.js является некорректное отображение подсказок и
оверлеев из-за конфликтов с CSS-свойством z-index. Это
особенно актуально в сложных веб-приложениях с большим количеством
слоёв, модальных окон и кастомных компонентов.
Наследование z-index Элементы, к
которым применяются подсказки Intro.js, могут находиться внутри
контейнеров с заданным z-index. Поскольку Intro.js
вставляет свои подсказки в конец body, они могут оказаться
под другими элементами с высоким z-index.
Статические и относительные контейнеры
Контейнеры с позиционированием relative,
absolute или fixed и установленным
z-index создают новые контекстные слои. Если подсказка
Intro.js не имеет достаточно высокий z-index, она будет
перекрываться этими слоями.
Модальные окна и сторонние библиотеки
Использование сторонних UI-библиотек (например, для модальных окон)
часто добавляет элементы с z-index > 1000. Intro.js по
умолчанию использует z-index 9999, но конфликты могут
возникать, если стили библиотеки перекрывают inline-стили
Intro.js.
Intro.js создает следующие ключевые элементы:
.introjs-overlay – полупрозрачный фон
вокруг выделяемого элемента..introjs-tooltip – подсказка с текстом
и кнопками управления..introjs-helperLayer – рамка вокруг
выделяемого элемента, управляющая подсветкой.Каждый из этих элементов имеет свой z-index:
.introjs-overlay — 9998.introjs-helperLayer — 9999.introjs-tooltip — 10000Эти значения могут быть переопределены через CSS или параметры
конфигурации introJs().setOptions({}).
z-index
через CSSДля корректного отображения подсказок можно использовать переопределение стилей:
.introjs-overlay {
z-index: 1050 !important;
}
.introjs-helperLayer {
z-index: 1060 !important;
}
.introjs-tooltip {
z-index: 1070 !important;
}
Важно: применять !important следует
только при необходимости, чтобы перебить встроенные inline-стили
Intro.js, которые по умолчанию имеют высокий приоритет.
Можно задать глобальный z-index через опцию
overlayOpacity для прозрачного слоя и через CSS для
подсказки:
introJs().setOptions({
showStepNumbers: true,
overlayOpacity: 0.7,
tooltipClass: 'custom-intro-tooltip'
});
.custom-intro-tooltip {
z-index: 1100 !important;
}
Если подсказка должна появляться над модальным окном:
z-index модального окна..introjs-tooltip и
.introjs-helperLayer значение на 50–100 выше.Пример:
.modal {
z-index: 1050;
}
.introjs-helperLayer {
z-index: 1100 !important;
}
.introjs-tooltip {
z-index: 1110 !important;
}
Это гарантирует, что подсказка и подсветка будут видимы поверх модального контента.
z-indexz-index для элементов
модального окна, контейнеров и подсказок.z-index подсказки и оверлея
Intro.js на несколько уровней выше всех конкурирующих элементов.z-index.z-index слишком высоко без нужды, чтобы не
нарушить порядок отображения других элементов.z-index могут отличаться из-за адаптивного CSS.Эти подходы позволяют минимизировать конфликты с z-index
и обеспечивают корректное отображение всех подсказок и оверлеев Intro.js
даже в сложных интерфейсах.