Driver.js — это библиотека для создания интерактивных руководств и подсказок по интерфейсу веб-приложений. Она позволяет выделять элементы страницы и сопровождать их поясняющими подсказками, управлять последовательностью шагов и стилями подсветки. Основные возможности включают:
onNext, onPrevious, onStart,
onComplete, что позволяет интегрировать тур с логикой
приложения.Для подключения Driver.js в проект можно использовать npm:
npm install driver.js
Или подключить напрямую через CDN:
<link rel="stylesheet" href="https://unpkg.com/driver.js/dist/driver.min.css">
<script src="https://unpkg.com/driver.js/dist/driver.min.js"></script>
После подключения создаётся экземпляр класса Driver:
const driver = new Driver({
animate: true,
opacity: 0.75,
padding: 10,
allowClose: false
});
Каждый шаг тура описывается объектом с ключевыми параметрами:
driver.defineSteps([
{
element: '#menu-button',
popover: {
title: 'Меню',
description: 'Кнопка для открытия основного меню',
position: 'bottom'
}
},
{
element: '#search-bar',
popover: {
title: 'Поиск',
description: 'Введите текст для поиска по сайту',
position: 'bottom'
}
}
]);
Ключевые свойства шага:
element — CSS-селектор элемента, который необходимо
выделить.popover.title — заголовок подсказки.popover.description — текст подсказки.popover.position — положение подсказки относительно
элемента (top, bottom, left,
right).padding и highlightPadding — отступы для
подсветки элемента.Для запуска тура используется метод start():
driver.start();
Для управления шагами предусмотрены методы:
moveNext() — переход к следующему шагу.movePrevious() — возврат к предыдущему шагу.reset() — сброс тура к начальному состоянию.События тура позволяют интегрировать логику приложения:
driver.on('next', (step) => {
console.log('Следующий шаг:', step);
});
driver.on('complete', () => {
console.log('Тур завершён');
});
Driver.js легко интегрируется с другими библиотеками и фреймворками благодаря универсальному API и возможности работы с динамически создаваемыми элементами. Например:
В React можно создавать туры после рендеринга компонентов:
import Driver from 'driver.js';
import 'driver.js/dist/driver.min.css';
import { useEffect } from 'react';
function App() {
useEffect(() => {
const driver = new Driver();
driver.defineSteps([
{ element: '#react-button', popover: { title: 'Кнопка', description: 'Пример кнопки', position: 'top' } }
]);
driver.start();
}, []);
return <button id="react-button">Нажми меня</button>;
}
Использование useEffect гарантирует, что элемент
существует в DOM перед началом тура.
В Vue тур создаётся в хуке mounted:
import Driver from 'driver.js';
import 'driver.js/dist/driver.min.css';
export default {
mounted() {
const driver = new Driver();
driver.defineSteps([
{ element: '#vue-input', popover: { title: 'Поле ввода', description: 'Введите текст', position: 'bottom' } }
]);
driver.start();
}
}
Если элементы создаются динамически (например, после запроса к
серверу), рекомендуется использовать setTimeout или события
рендеринга для задержки старта тура до появления элементов:
fetch('/api/data').then(() => {
setTimeout(() => driver.start(), 500);
});
Driver.js предоставляет обширные возможности кастомизации:
opacity — затемнение фона.padding — отступ вокруг выделяемого элемента.animation — включение анимации подсветки.className — добавление кастомных CSS-классов к
подсказкам.Пример кастомного стиля:
.driver-popover {
background-color: #1e1e1e;
color: #fff;
border-radius: 8px;
font-family: 'Arial', sans-serif;
}
.driver-arrow {
border-color: #1e1e1e;
}
Эти возможности делают Driver.js гибким инструментом для интеграции в сложные веб-приложения, сохраняя полную управляемость и визуальную консистентность с интерфейсом.