Intro.js позволяет полностью контролировать визуальное оформление шагов интерактивного руководства. Для этого используется система тем, которая базируется на CSS-классах. Каждому шагу можно назначить индивидуальный стиль либо применять единый набор правил для всей последовательности.
.introjs-tooltip – контейнер
подсказки, содержащий текст и кнопки навигации..introjs-arrow – стрелка, указывающая
на целевой элемент..introjs-tooltiptext – блок текста
внутри подсказки..introjs-tooltipbuttons – контейнер
для кнопок «Next», «Back», «Skip»..introjs-helperLayer – слой затемнения
вокруг фокусируемого элемента.Изменение этих классов позволяет менять цвета, размеры, отступы, шрифты и анимацию появления.
Для создания собственной темы следует:
.custom-theme..custom-theme .introjs-tooltip {
background-color: #2c3e50;
color: #ecf0f1;
font-family: 'Segoe UI', sans-serif;
border-radius: 10px;
padding: 20px;
box-shadow: 0 5px 15px rgba(0,0,0,0.3);
}
.custom-theme .introjs-arrow {
border-color: #2c3e50;
}
.custom-theme .introjs-tooltipbuttons button {
background-color: #2980b9;
color: #fff;
border: none;
border-radius: 5px;
padding: 5px 15px;
cursor: pointer;
transition: background-color 0.3s;
}
.custom-theme .introjs-tooltipbuttons button:hover {
background-color: #3498db;
}
introJs()
.setOptions({
steps: [
{ element: '#step1', intro: 'Первый шаг' },
{ element: '#step2', intro: 'Второй шаг' }
],
tooltipClass: 'custom-theme'
})
.start();
Иногда требуется, чтобы разные шаги имели разные стили. Для этого
используется свойство tooltipClass на уровне отдельного
шага:
steps: [
{ element: '#step1', intro: 'Шаг с темой A', tooltipClass: 'theme-a' },
{ element: '#step2', intro: 'Шаг с темой B', tooltipClass: 'theme-b' }
]
В CSS создаются соответствующие классы .theme-a и
.theme-b, определяющие цвет фона, шрифты и отступы.
Стрелки подсказок могут быть изменены с помощью CSS-псевдоэлементов. Например:
.custom-theme .introjs-arrow {
border-width: 10px !important;
}
.custom-theme .introjs-arrow:after {
border-color: #2c3e50 transparent transparent transparent !important;
}
Можно также управлять положением стрелки, изменяя свойства
top, left, right,
bottom через медиазапросы для адаптивного дизайна.
Слой затемнения (.introjs-helperLayer) позволяет создать
контраст с фокусируемым элементом:
.custom-theme .introjs-helperLayer {
background-color: rgba(44, 62, 80, 0.7);
border-radius: 12px;
}
Можно использовать градиенты или анимацию появления для более динамичного эффекта.
Для удобства масштабирования темы целесообразно использовать CSS-переменные:
:root {
--tooltip-bg: #2c3e50;
--tooltip-color: #ecf0f1;
--button-bg: #2980b9;
--button-hover-bg: #3498db;
}
.custom-theme .introjs-tooltip {
background-color: var(--tooltip-bg);
color: var(--tooltip-color);
}
.custom-theme .introjs-tooltipbuttons button {
background-color: var(--button-bg);
}
.custom-theme .introjs-tooltipbuttons button:hover {
background-color: var(--button-hover-bg);
}
Это позволяет легко менять тему глобально, не переписывая каждый класс.
Для плавного появления подсказок и стрелок можно использовать CSS-анимации:
.custom-theme .introjs-tooltip {
opacity: 0;
transform: translateY(-10px);
transition: opacity 0.4s ease, transform 0.4s ease;
}
.custom-theme .introjs-tooltip.introjs-showElement {
opacity: 1;
transform: translateY(0);
}
Это добавляет визуальной динамики и делает интерфейс более современным.
Помимо CSS, тему можно менять динамически через JavaScript, используя методы Intro.js:
var intro = introJs();
intro.setOption('tooltipClass', 'custom-theme');
intro.onbeforechange(function(targetElement) {
if(targetElement.id === 'step2') {
this.setOption('tooltipClass', 'theme-b');
}
});
intro.start();
Это позволяет менять оформление шагов в зависимости от контекста или состояния приложения, создавая более интерактивный и персонализированный опыт.