Для создания интерактивного тура с помощью Intro.js необходимо сначала подключить библиотеку к проекту. Минимальный набор включает CSS и JS-файлы библиотеки:
<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>
После подключения можно создать объект тура, вызвав метод
introJs(). Этот объект предоставляет полный контроль над
ходом и поведением тура.
const tour = introJs();
Шаги тура могут задаваться двумя способами: через HTML-атрибуты или через JavaScript-конфигурацию.
Через HTML-атрибуты:
<button data-intro="Это кнопка запуска!" data-step="1">Запустить</button>
<div data-intro="Основное поле контента" data-step="2">Контент</div>
Через JavaScript:
tour.setOptions({
steps: [
{
element: '#startBtn',
intro: 'Нажмите сюда для запуска',
position: 'right'
},
{
element: '#content',
intro: 'Здесь отображается основной контент',
position: 'bottom'
}
]
});
В опции position можно использовать:
top, left, right,
bottom, auto. auto автоматически
подбирает оптимальное положение подсказки.
Запуск тура выполняется методом start().
tour.start();
При вызове start() библиотека начинает последовательное
отображение всех шагов, учитывая их порядок и позиции.
Метод возвращает объект IntroJs, что позволяет вызывать цепочку методов, например:
introJs().setOptions({ showProgress: true }).start();
Пауза и возобновление Чтобы временно остановить тур,
используется метод exit(), который полностью завершает
текущий тур. Если требуется временная пауза с возможностью продолжить,
необходимо вручную контролировать индекс шага и повторно запускать тур с
start() или goToStep(n).start().
tour.exit(); // остановка
tour.goToStep(2).start(); // продолжение с конкретного шага
Переход между шагами
nextStep() – переход к следующему шагу.previousStep() – возврат к предыдущему шагу.goToStep(stepNumber) – переход к конкретному шагу по
номеру.tour.nextStep();
tour.previousStep();
tour.goToStep(3).start();
Автоматическое завершение Тур автоматически
завершает работу после последнего шага. При необходимости можно
подписаться на событие oncomplete для выполнения действий
после окончания тура:
tour.oncomplete(function() {
console.log('Тур завершен');
});
Иногда требуется остановить тур по событию пользователя или изменению состояния страницы. Для этого используются:
exit() – немедленное завершение тура.hideHint() – скрытие подсказки без выхода из всего тура
(для отдельных шагов с подсказками).tour.exit(); // полностью останавливает тур
tour.hideHint(); // скрывает текущую подсказку, тур продолжается
Настройки поведения при выходе задаются через опцию
exitOnOverlayClick и exitOnEsc:
tour.setOptions({
exitOnOverlayClick: true, // клик по затемненной области завершает тур
exitOnEsc: true // клавиша Esc завершает тур
});
Это позволяет гибко контролировать, каким образом пользователь может прервать интерактивный процесс.
Intro.js предоставляет множество событий, которые помогают реагировать на действия пользователя:
onbeforechange(targetElement) – перед сменой шага.onafterchange(targetElement) – после смены шага.oncomplete() – после завершения тура.onexit() – при остановке тура.tour.onbeforechange(function(element) {
console.log('Сменится шаг:', element);
});
tour.onexit(function() {
console.log('Тур был остановлен пользователем');
});
Эти события позволяют интегрировать интерактивный тур с логикой приложения, например блокировать кнопки или сохранять прогресс пользователя.
introJs() – создаёт объект тура.start() – запускает тур с текущими настройками.exit() – полностью останавливает тур.goToStep(n).start() – позволяет продолжить тур с
конкретного шага.oncomplete, onexit,
onbeforechange, onafterchange) – дают полный
контроль над ходом тура.exitOnOverlayClick, exitOnEsc)
– определяют, как тур реагирует на действия пользователя.Такой подход обеспечивает полное управление интерактивными инструкциями на странице, позволяя создавать как линейные, так и динамические пользовательские туры.