Для начала работы с Intro.js необходимо подключить саму библиотеку и стили. Обычно это делается через CDN или установку через npm.
Через CDN:
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/intro.js/minified/introjs.min.css">
<script src="https://cdn.jsdelivr.net/npm/intro.js/minified/intro.min.js"></script>
Через npm:
npm install intro.js
import introJs from 'intro.js';
import 'intro.js/introjs.css';
После подключения библиотеки становится доступен объект
introJs(), который используется для создания и управления
интерактивным туром.
Создание базового тура сводится к вызову функции
introJs() и последующей настройке шагов:
const tour = introJs();
tour.setOptions({
steps: [
{
element: '#step1',
intro: 'Это первый шаг вашего тура.',
position: 'bottom'
},
{
element: '#step2',
intro: 'Здесь можно показать важный элемент интерфейса.',
position: 'right'
},
{
element: '#step3',
intro: 'Финальный шаг демонстрирует завершение процесса.',
position: 'left'
}
],
showStepNumbers: true,
showBullets: true,
exitOnOverlayClick: true,
exitOnEsc: true
});
tour.start();
Ключевые моменты:
element – селектор DOM-элемента, который будет выделен
на шаге.intro – текстовое описание шага, поддерживает
HTML-разметку.position – позиция подсказки относительно элемента
(top, bottom, left,
right, auto).showStepNumbers – отображение номера шага.showBullets – отображение точек прогресса.exitOnOverlayClick и exitOnEsc – позволяют
закрыть тур кликом по фону или клавишей Esc.Intro.js предоставляет методы для управления туром динамически:
tour.nextStep(); // Переход к следующему шагу
tour.previousStep(); // Переход к предыдущему шагу
tour.goToStep(2); // Переход к конкретному шагу по номеру
tour.exit(); // Завершение тура
Также возможна обработка событий:
tour.onbeforechange(function(targetElement) {
console.log('Перед изменением шага:', targetElement.id);
});
tour.onafterchange(function(targetElement) {
console.log('После изменения шага:', targetElement.id);
});
tour.oncomplete(function() {
console.log('Тур завершен');
});
tour.onexit(function() {
console.log('Тур был прерван');
});
Эти события позволяют интегрировать интерактивный тур с логикой приложения: показывать скрытые элементы, загружать данные или отслеживать действия пользователя.
Если DOM-элементы динамически создаются, можно использовать селекторы без жесткой привязки:
tour.setOptions({
steps: [
{
element: document.querySelector('.dynamic-element'),
intro: 'Элемент может появиться позже, но будет автоматически обнаружен.',
position: 'top'
}
]
});
Intro.js отслеживает наличие элемента в DOM перед показом подсказки. Если элемент отсутствует, шаг пропускается.
Внешний вид подсказок можно изменять через CSS или встроенные опции:
tour.setOptions({
tooltipClass: 'custom-tooltip',
highlightClass: 'custom-highlight',
overlayOpacity: 0.7
});
tooltipClass – добавляет CSS-класс к подсказке.highlightClass – класс для выделяемого элемента.overlayOpacity – прозрачность фона, затемняющего
страницу.Пример CSS для кастомизации:
.custom-tooltip {
background-color: #2b2b2b;
color: #fff;
font-size: 16px;
border-radius: 8px;
padding: 15px;
}
.custom-highlight {
box-shadow: 0 0 15px 5px rgba(255, 165, 0, 0.8);
border-radius: 5px;
}
Intro.js позволяет создавать туры, шаги которых зависят от состояния приложения:
const steps = [];
if (document.querySelector('#feature1')) {
steps.push({
element: '#feature1',
intro: 'Особенность 1 активна',
position: 'bottom'
});
}
if (userHasAccess) {
steps.push({
element: '#admin-panel',
intro: 'Доступен административный интерфейс',
position: 'right'
});
}
introJs().setOptions({ steps }).start();
Это обеспечивает гибкость при построении интерактивного обучения для пользователей с разными ролями или настройками интерфейса.
В SPA (Single Page Application) шаги тура можно инициировать после рендеринга компонентов:
router.afterEach(() => {
const tour = introJs();
tour.setOptions({
steps: [
{
element: '#navbar',
intro: 'Навигационное меню',
position: 'bottom'
}
]
});
tour.start();
});
Такой подход гарантирует, что все элементы будут присутствовать в DOM к моменту отображения подсказок.
element и
intro для каждого шага, иначе тур не будет
работать корректно.Эти принципы позволяют создавать полностью интерактивные и адаптивные туры, обеспечивающие качественный пользовательский опыт.