Driver.js — это легковесная библиотека JavaScript для создания интерактивных пошаговых гидов по веб-интерфейсу. Основной принцип работы основан на выделении элементов интерфейса с последующим отображением подсказок и подсветки активной области.
Создание базового экземпляра происходит через конструктор:
const driver = new Driver();
После инициализации можно задавать шаги для пошагового гида с помощью
метода defineSteps. Каждый шаг включает в себя элемент,
который нужно выделить, и текст подсказки:
driver.defineSteps([
{
element: '#button-start',
popover: {
title: 'Начало работы',
description: 'Нажмите эту кнопку, чтобы запустить процесс.',
position: 'bottom'
}
},
{
element: '#settings',
popover: {
title: 'Настройки',
description: 'Здесь можно изменить параметры приложения.',
position: 'left'
}
}
]);
Запуск гида осуществляется методом start():
driver.start();
Каждый шаг имеет набор ключевых параметров:
element – CSS-селектор или DOM-элемент, который нужно подсветить.
popover – объект с содержимым подсказки:
title – заголовок подсказки.description – текст подсказки.position – расположение подсказки относительно элемента
(top, bottom, left,
right).alignment – выравнивание подсказки (start,
center, end).onNext / onPrevious / onHighlightStarted / onHighlighted – колбэки для управления логикой при переходе между шагами.
Пример использования колбэков:
driver.defineSteps([
{
element: '#submit',
popover: {
title: 'Отправка формы',
description: 'Нажмите, чтобы отправить данные.',
position: 'right'
},
onNext: () => console.log('Пользователь перешел к следующему шагу')
}
]);
Driver.js поддерживает глобальные конфигурации:
Пример глобальной конфигурации:
const driver = new Driver({
allowClose: false,
keyboardControl: true,
overlayClickNext: true,
animate: true
});
В современных SPA-приложениях элементы интерфейса могут появляться динамически. Driver.js позволяет отложенное определение шагов через проверку наличия элемента:
driver.defineSteps([
{
element: () => document.querySelector('#dynamic-element'),
popover: {
title: 'Динамический элемент',
description: 'Этот элемент загружается после запроса данных.',
position: 'top'
}
}
]);
Использование функции вместо селектора гарантирует, что шаг будет корректно создан даже при поздней загрузке элемента.
Для React, Vue или Angular Driver.js часто используется совместно с хуками жизненного цикла компонента:
useEffect, чтобы гарантировать существование
DOM-элементов.mounted(), чтобы
элементы уже присутствовали в DOM.ngAfterViewInit для доступа к шаблонным элементам.Пример для React:
useEffect(() => {
const driver = new Driver();
driver.defineSteps([
{
element: '#react-button',
popover: { title: 'Кнопка React', description: 'Пример подсказки', position: 'bottom' }
}
]);
driver.start();
}, []);
Driver.js позволяет полностью изменять внешний вид подсказок и overlay. Основные параметры:
Пример:
const driver = new Driver({
stageBackground: 'rgba(0,0,0,0.7)',
nextBtnText: 'Далее',
prevBtnText: 'Назад',
closeBtnText: 'Закрыть',
padding: 10
});
onNext, onPrevious, onHighlighted
для фиксации действий пользователя.driver.defineSteps([
{
element: '#admin-panel',
popover: { title: 'Админ-панель', description: 'Только для администраторов', position: 'left' },
showStep: () => user.role === 'admin'
}
]);
При переходе на Driver.js с другой системы подсказок важно: