Intro.js предоставляет гибкий механизм создания интерактивных туров по интерфейсу, а также возможность отображения кратких подсказок (хинтов) для отдельных элементов. Комбинирование этих двух функций позволяет строить многоуровневые интерактивные руководства: сначала привлекая внимание с помощью хинтов, а затем сопровождая пользователя пошаговым туром.
Туры создаются с использованием метода
introJs().setOptions(options).start(). Основные параметры в
options:
steps — массив объектов с описанием шагов тура.
Каждый шаг включает:
element — DOM-элемент, к которому привязан шаг;intro — текст подсказки;position — расположение подсказки относительно элемента
(top, right, left,
bottom).showStepNumbers — отображение номера шага;
showBullets — наличие навигационных точек
внизу.
Хинты добавляются через addHints(), а
их свойства определяются в hintOptions:
hint — текст хинта;hintPosition — положение хинта относительно
элемента;hintButtonLabel — текст кнопки для закрытия или запуска
действия.introJs().setOptions({
steps: [
{ element: '#menu', intro: 'Это главное меню', position: 'right' },
{ element: '#content', intro: 'Здесь отображается контент', position: 'bottom' }
],
showStepNumbers: true,
showBullets: true
}).start();
introJs().addHints();
Один из распространённых сценариев — показывать хинты сначала для привлечения внимания, а затем запускать тур:
const intro = introJs();
intro.setOptions({
hints: [
{ element: '#menu', hint: 'Здесь находятся основные разделы', hintPosition: 'top-middle' },
{ element: '#settings', hint: 'Настройки доступны здесь', hintPosition: 'right-middle' }
]
});
intro.addHints();
Хинты могут содержать обработчики событий, которые запускают тур:
document.querySelector('#menu').addEventListener('click', () => {
intro.setOptions({
steps: [
{ element: '#menu', intro: 'Это меню с навигацией', position: 'right' },
{ element: '#content', intro: 'Контент отображается здесь', position: 'bottom' },
{ element: '#footer', intro: 'Футер с дополнительной информацией', position: 'top' }
]
}).start();
});
Intro.js позволяет управлять состоянием подсказок и туров во время работы страницы:
hideHints() — скрывает все текущие хинты;showHints() — отображает все хинты заново;exit() — завершает текущий тур;goToStep(index).start() — позволяет начать тур с
конкретного шага.Пример переключения:
const intro = introJs();
// Показ хинтов
intro.addHints();
// После закрытия всех хинтов, запускаем тур
intro.onhintclose(() => {
intro.setOptions({
steps: [
{ element: '#menu', intro: 'Меню для навигации', position: 'right' },
{ element: '#content', intro: 'Основной контент', position: 'bottom' }
]
}).start();
});
Советы по улучшению UX при сочетании хинтов и туров:
onhintclick,
onhintclose) для запуска тура в нужный момент.Intro.js поддерживает стилизацию как туров, так и хинтов:
CSS-классы:
.introjs-tooltip — основной контейнер подсказки;.introjs-hint — контейнер хинта;Можно менять цвета, тени, кнопки и анимацию:
.introjs-tooltip {
background-color: #2c3e50;
color: #ecf0f1;
border-radius: 8px;
padding: 15px;
}
.introjs-hint {
background-color: #e74c3c;
color: #fff;
border-radius: 50%;
width: 20px;
height: 20px;
}
Цепочка хинтов с туром по завершении:
Интерактивный запуск тура из хинта:
Контекстное отображение:
Комбинирование хинтов и туров в Intro.js требует управления состоянием, событий и пользовательских действий. Ключевое преимущество — гибкая организация интерактивного обучения, где хинты привлекают внимание, а туры глубоко объясняют функционал. Такой подход позволяет создавать пошаговые, адаптивные руководства без перегрузки интерфейса.