Для использования 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/minified/introjs.min.css';
Для запуска базового интерактивного тура используется объект
introJs():
const tour = introJs();
tour.start();
По умолчанию Intro.js выделяет элементы страницы по атрибуту
data-intro, который содержит текст подсказки.
<button data-intro="Нажмите здесь, чтобы открыть меню">Меню</button>
Intro.js поддерживает два подхода к определению шагов: автоматическое через HTML-атрибуты и ручное через JavaScript.
Каждый шаг задается через атрибуты data-intro и
data-step:
<div data-step="1" data-intro="Первый шаг"></div>
<div data-step="2" data-intro="Второй шаг"></div>
Библиотека сама определяет порядок шагов по значению
data-step.
Можно создавать тур полностью через объект Jav * aScript:
introJs().setOptions({
steps: [
{
element: '#step1',
intro: 'Описание первого шага',
position: 'right'
},
{
element: '#step2',
intro: 'Описание второго шага',
position: 'bottom'
}
],
showStepNumbers: true,
exitOnOverlayClick: false
}).start();
Ключевые параметры шагов:
element — селектор или DOM-элемент, который будет
выделен.intro — текст подсказки.position — положение подсказки относительно элемента
(top, left, right,
bottom, auto).tooltipClass — дополнительный CSS-класс для
кастомизации подсказки.disableInteraction — блокирует взаимодействие с
элементом во время шага.showStepNumbers — отображение номеров шагов.showBullets — отображение навигационных точек внизу
подсказки.exitOnEsc — закрытие тура при нажатии клавиши Esc.exitOnOverlayClick — закрытие тура при клике на
затемнённый фон.scrollToElement — автоматическая прокрутка страницы к
выделенному элементу.Intro.js поддерживает кнопки Next, Back и Done. Их текст можно изменить:
introJs().setOptions({
nextLabel: 'Далее',
prevLabel: 'Назад',
doneLabel: 'Закрыть'
});
Также можно полностью скрыть кнопки или создавать собственные элементы управления через события.
Intro.js предоставляет богатый набор событий, позволяющих контролировать ход тура:
onbeforechange(targetElement) — вызывается перед
изменением шага.onchange(targetElement) — после смены шага.oncomplete() — когда пользователь завершил тур.onexit() — при досрочном закрытии тура.onafterchange(targetElement) — после анимации перехода
к шагу.Пример использования:
introJs()
.onchange(function(element) {
console.log('Текущий шаг:', element);
})
.oncomplete(function() {
console.log('Тур завершён');
})
.start();
Шаги тура можно изменять в процессе выполнения:
const tour = introJs();
tour.setOptions({
steps: [
{ element: '#step1', intro: 'Первый шаг' }
]
});
tour.start();
// Добавление шага динамически
tour.addStep({
element: '#step2',
intro: 'Второй шаг'
});
Intro.js использует CSS для визуализации подсказок и оверлея. Возможности кастомизации:
tooltipClass — применяет CSS-класс к подсказке..introjs-overlay) и
подсказки (.introjs-tooltip).transition и
opacity.Пример кастомного CSS:
.introjs-tooltip.custom-tooltip {
background-color: #222;
color: #fff;
font-size: 16px;
border-radius: 8px;
}
.introjs-tooltip-arrow {
border-color: #222;
}
Intro.js легко интегрируется с популярными фреймворками:
v-if.Пример для React:
import React, { useEffect } from 'react';
import introJs from 'intro.js';
import 'intro.js/minified/introjs.min.css';
function AppTour() {
useEffect(() => {
introJs().start();
}, []);
return (
<div>
<button data-step="1" data-intro="Нажмите, чтобы открыть меню">Меню</button>
</div>
);
}
Можно показывать шаги только при определённых условиях:
const steps = [
{ element: '#step1', intro: 'Шаг 1' },
{
element: '#step2',
intro: 'Шаг 2',
// шаг будет пропущен, если условие false
skip: () => !user.isAdmin
}
];
introJs().setOptions({ steps }).start();
Можно создавать несколько туров для разных частей интерфейса и запускать их по событиям:
const tourSettings = introJs().setOptions({ steps: [...] });
const tourFeatures = introJs().setOptions({ steps: [...] });
document.querySelector('#startSettingsTour').addEventListener('click', () => tourSettings.start());
document.querySelector('#startFeaturesTour').addEventListener('click', () => tourFeatures.start());
Intro.js поддерживает перевод текста кнопок и шагов:
introJs().setOptions({
nextLabel: 'Следующий',
prevLabel: 'Предыдущий',
doneLabel: 'Готово'
});
Текст подсказок также можно динамически изменять на основе языка пользователя.
Эти возможности делают Intro.js мощным инструментом для создания интерактивных инструкций, пошаговых туров и обучения пользователей интерфейсу. Правильное сочетание конфигураций, событий и кастомного CSS позволяет полностью контролировать процесс и внешний вид тура.