Для начала работы с Intro.js необходимо подключить библиотеку к проекту. Существует два основных способа: через CDN или через npm.
Через CDN:
<link rel="stylesheet" href="https://unpkg.com/intro.js/minified/introjs.min.css">
<script src="https://unpkg.com/intro.js/minified/intro.min.js"></script>
Через npm:
npm install intro.js
import introJs from 'intro.js';
import 'intro.js/minified/introjs.min.css';
Подключение CSS обязательно, так как оно отвечает за визуальные эффекты и оформление подсказок.
Intro.js — это библиотека для создания интерактивных пошаговых подсказок на веб-страницах. Основные концепты:
Простейший тур состоит из последовательности шагов:
introJs().setOptions({
steps: [
{
element: '#step1',
intro: 'Это первый шаг.'
},
{
element: '#step2',
intro: 'Это второй шаг.'
},
{
element: '#step3',
intro: 'Это третий шаг.'
}
]
}).start();
Объяснение ключевых опций:
element — селектор DOM-элемента, к которому
привязывается шаг.intro — текст подсказки.position — положение подсказки относительно элемента
(top, left, right,
bottom, auto).Intro.js позволяет изменять навигационные элементы и стиль:
introJs().setOptions({
showStepNumbers: true, // показывать номер шага
showBullets: true, // показывать индикатор прогресса
exitOnOverlayClick: false, // запрещает закрытие по клику на оверлей
nextLabel: 'Вперёд', // текст кнопки "Next"
prevLabel: 'Назад', // текст кнопки "Back"
skipLabel: 'Пропустить', // текст кнопки "Skip"
doneLabel: 'Готово' // текст кнопки завершения
}).start();
showStepNumbers помогает пользователю ориентироваться в
последовательности шагов.exitOnOverlayClick повышает контроль над поведением
тура при взаимодействии с оверлеем.Шаги можно формировать динамически, используя данные с сервера или события на странице:
fetch('/api/steps')
.then(response => response.json())
.then(steps => {
introJs().setOptions({ steps }).start();
});
Это позволяет строить адаптивные туры, которые меняются в зависимости от контекста или роли пользователя.
Intro.js предоставляет несколько важных событий, которые помогают контролировать процесс тура:
onbeforechange — вызывается перед переходом к
следующему шагу.onchange — вызывается при отображении нового шага.onafterchange — после полной отрисовки шага.oncomplete — после завершения всего тура.onexit — если тур был прерван пользователем.Пример использования событий:
introJs()
.onchange(function(targetElement) {
console.log('Текущий элемент:', targetElement);
})
.oncomplete(function() {
console.log('Тур завершён');
})
.start();
Можно создавать туры с условными шагами, которые отображаются только при выполнении определённого условия:
const steps = [
{ element: '#step1', intro: 'Шаг 1' },
{ element: '#step2', intro: 'Шаг 2', condition: () => user.isAdmin },
{ element: '#step3', intro: 'Шаг 3' }
];
const filteredSteps = steps.filter(step => !step.condition || step.condition());
introJs().setOptions({ steps: filteredSteps }).start();
Такой подход позволяет создавать персонализированные интерактивные инструкции для разных групп пользователей.
Intro.js автоматически адаптирует подсказки под размеры экрана. Для улучшения работы на мобильных устройствах:
disableInteraction для
предотвращения клика по выделенным элементам.position: 'auto', чтобы подсказка
автоматически располагалась в подходящем месте.Интеграция с CSS-анимациями: можно задавать
кастомные анимации через CSS, изменяя класс
.introjs-tooltip.
Стилизация оверлея: через CSS
.introjs-overlay можно менять прозрачность, цвет и
добавлять переходы.
Модальные шаги: при необходимости шаг можно сделать полноэкранным, скрыв стандартные навигационные элементы.
Хотите, я могу составить подробный пример большого интерактивного тура, который объединяет все перечисленные возможности и демонстрирует сложное профилирование шагов?