Driver.js — это библиотека для создания интерактивных туров по веб-интерфейсу. Она позволяет выделять отдельные элементы страницы, сопровождая их подсказками, и управлять последовательностью шагов, что делает её идеальной для административных панелей, где функционал сложен и многослойен.
Основная сущность библиотеки — Driver. Для её использования необходимо создать экземпляр:
const driver = new Driver();
Этот объект управляет всей логикой показа шагов, а также хранит настройки туров.
Шаги тура задаются массивом объектов, каждый из которых описывает конкретный элемент интерфейса и содержимое подсказки:
driver.defineSteps([
{
element: '#menu-dashboard',
popover: {
title: 'Панель управления',
description: 'Здесь отображается общая статистика и метрики.',
position: 'bottom'
}
},
{
element: '#menu-users',
popover: {
title: 'Управление пользователями',
description: 'Добавление, редактирование и удаление пользователей.',
position: 'right'
}
}
]);
Ключевые параметры шага:
element — селектор DOM-элемента, который будет
подсвечен.
popover — объект с описанием подсказки:
title — заголовок.description — текст подсказки.position — позиция относительно элемента
(top, bottom, left,
right, auto).onNext, onPrevious,
onClose — функции обратного вызова для управления логикой
шага.
Для запуска тура используется метод start():
driver.start();
Можно указать стартовый шаг:
driver.start(1); // Запускает тур с второго шага
Методы управления:
reset() — сброс текущего состояния и скрытие всех
подсказок.highlight(element) — подсвечивает конкретный элемент
без создания шага.focus(element) — прокручивает страницу и фокусирует
элемент.Driver.js позволяет гибко настраивать визуальные эффекты:
const driver = new Driver({
opacity: 0.8, // Прозрачность фона
padding: 10, // Отступ вокруг элемента
allowClose: false, // Запрет закрытия по клику вне элемента
showButtons: true, // Отображение кнопок навигации
keyboardControl: true // Управление с клавиатуры
});
Особенности для административных панелей:
driver.highlight после рендеринга
компонента.scrollIntoViewOptions для корректного прокручивания до
элемента:driver.defineSteps([
{
element: '#user-form',
popover: {
title: 'Форма пользователя',
description: 'Заполните данные пользователя для создания записи.',
position: 'top'
},
scrollIntoViewOptions: {
beh * avior: 'smooth',
block: 'center'
}
}
]);
Для административных панелей удобно создавать несколько независимых туров, например, для разных разделов:
const dashboardTour = new Driver({ animate: true });
const usersTour = new Driver({ animate: false });
dashboardTour.defineSteps([...]);
usersTour.defineSteps([...]);
Запуск туров может быть по событиям:
document.querySelector('#start-dashboard-tour').addEventListener('click', () => {
dashboardTour.start();
});
document.querySelector('#start-users-tour').addEventListener('click', () => {
usersTour.start();
});
В административных панелях количество элементов может меняться. Driver.js позволяет генерировать шаги динамически:
const steps = Array.from(document.querySelectorAll('.dashboard-widget')).map((el, index) => ({
element: el,
popover: {
title: `Виджет ${index + 1}`,
description: 'Описание виджета',
position: 'bottom'
}
}));
driver.defineSteps(steps);
driver.start();
Для интеграции с логикой панели можно использовать колбэки:
driver.defineSteps([
{
element: '#save-button',
popover: {
title: 'Сохранение',
description: 'Нажмите для сохранения изменений.',
position: 'right'
},
onNext: () => {
console.log('Пользователь готов к следующему шагу');
},
onClose: () => {
alert('Тур завершён');
}
}
]);
Колбэки позволяют запускать валидацию форм, подсветку ошибок, переключение вкладок и другие действия.
position: auto для подсказок, чтобы не
перекрывать элементы панели.popoverClass
для соответствия стилю административной панели.Driver.js предоставляет полный контроль над последовательностью, визуализацией и поведением интерактивных туров. Это делает её оптимальным инструментом для сложных административных интерфейсов с множеством элементов и динамическими изменениями DOM.