Intro.js — это легковесная библиотека на JavaScript для создания интерактивных пошаговых руководств по интерфейсу. Она позволяет выделять элементы страницы, добавлять подсказки и управлять последовательностью шагов, что делает обучение пользователей более наглядным. Библиотека работает с любыми DOM-элементами и не требует сторонних зависимостей.
Для подключения Intro.js достаточно добавить ссылку на скрипт и CSS-файл:
<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():
introJs().start();
Для привязки шагов к конкретным элементам DOM используется атрибут
data-intro:
<button data-intro="Нажмите, чтобы добавить новый элемент">Добавить</button>
Можно также задать порядок шагов с помощью
data-step:
<button data-intro="Первый шаг" data-step="1">Шаг 1</button>
<button data-intro="Второй шаг" data-step="2">Шаг 2</button>
Intro.js предоставляет широкие возможности кастомизации:
top, left, right,
bottom, auto).true/false).true/false).Пример конфигурации:
introJs().setOptions({
tooltipPosition: 'right',
showStepNumbers: true,
exitOnOverlayClick: false,
nextLabel: 'Далее',
prevLabel: 'Назад',
skipLabel: 'Пропустить',
doneLabel: 'Готово'
}).start();
Intro.js поддерживает динамическое создание шагов через метод
addStep():
introJs().addStep({
element: document.querySelector('#dynamicButton'),
intro: 'Этот элемент добавлен динамически',
position: 'bottom'
}).start();
Можно программно менять содержимое подсказок и их порядок, что полезно для интерфейсов с изменяемыми компонентами или условными шагами.
Библиотека предоставляет события, которые позволяют контролировать процесс:
onbeforechange(targetElement) — перед переходом на
следующий шаг.onchange(targetElement) — после перехода на новый
шаг.onafterchange(targetElement) — сразу после отрисовки
подсказки.oncomplete() — при завершении всей
последовательности.onexit() — при досрочном выходе из руководства.Пример использования:
introJs().onchange(function(targetElement){
console.log('Пользователь перешёл к элементу:', targetElement);
}).start();
introJs().onbeforechange(function(targetElement){
if(targetElement.id === 'stepToSkip'){
this.next();
}
});
var tour1 = introJs().setOptions({ steps: [...] });
var tour2 = introJs().setOptions({ steps: [...] });
tour1.oncomplete(function(){
tour2.start();
});
tour1.start();
Точная настройка шагов и текста подсказок позволяет сделать интерактивное руководство максимально полезным и удобным.