Механизм выделения в Driver.js отвечает за визуальное выделение элементов страницы для построения интерактивных пошаговых гидов. Главная идея заключается в создании прозрачного слоя поверх страницы и динамической подсветки целевых элементов. Подсветка реализуется через маску, которая затемняет всё, кроме активного элемента, привлекая внимание пользователя к конкретной части интерфейса.
Элементы подсветки задаются с помощью CSS-селекторов или DOM-элементов. Driver.js автоматически вычисляет координаты элемента и формирует прямоугольную область с отступами, указанными в параметре padding. Эти отступы обеспечивают пространство между границей элемента и подсветкой, предотвращая визуальное слияние с маской.
Параметры выделения задаются при инициализации шага:
element – CSS-селектор или объект DOM, который
необходимо выделить.popover – объект с настройками всплывающей подсказки
(позиция, заголовок, описание).padding – отступ вокруг элемента, измеряется в
пикселях.stageBackground – цвет подсветки активной области.highlightClass – дополнительный CSS-класс для
кастомного оформления выделения.Например:
driver.highlight({
element: '#submit-button',
popover: {
title: 'Кнопка отправки',
description: 'Нажмите здесь, чтобы отправить форму',
position: 'bottom'
},
padding: 10,
stageBackground: '#fff'
});
Driver.js поддерживает последовательное выделение нескольких
элементов. Каждый шаг определяется как отдельный объект со
всеми параметрами подсветки и описания. Библиотека автоматически
управляет переходами между шагами через методы next() и
previous(), а также позволяет запускать весь гид целиком
через start().
const steps = [
{
element: '#username',
popover: { title: 'Имя пользователя', description: 'Введите имя' }
},
{
element: '#password',
popover: { title: 'Пароль', description: 'Введите пароль' }
},
{
element: '#submit-button',
popover: { title: 'Отправить', description: 'Нажмите для входа' }
}
];
const driver = new Driver({ steps });
driver.start();
Если элементы создаются динамически через JavaScript, их выделение
можно настроить с помощью функции element, возвращающей
текущий DOM-узел. Это предотвращает ошибки при попытке выделить ещё не
существующий элемент.
driver.highlight({
element: () => document.querySelector('.dynamic-item'),
popover: { title: 'Динамический элемент', description: 'Элемент создан на лету' }
});
Driver.js поддерживает плавные переходы подсветки с помощью
параметров animation и CSS-переходов. По умолчанию
применяется плавная анимация увеличения и уменьшения прямоугольника
подсветки, что делает гид более естественным. Можно изменять скорость
анимации через CSS-переопределение классов
.driver-highlight и .driver-popover.
Для элементов, скрытых внутри контейнеров с прокруткой или
динамически меняющейся разметки, Driver.js автоматически вычисляет
позицию относительно видимой области окна и
корректирует положение подсветки. В случае наложения нескольких
элементов рекомендуется использовать padding и
stageBackground для визуального разграничения.
С помощью CSS можно полностью изменить вид подсветки:
.driver-highlight – стиль рамки и фона подсветки..driver-disabled-element – стиль элементов, которые
временно недоступны..driver-popover – оформление всплывающей подсказки
(тень, цвет фона, анимации).Также возможно добавление собственных обработчиков
событий на стадии выделения: onHighlightStarted и
onHighlightEnded, что позволяет запускать дополнительные
эффекты, логирование или изменение интерфейса при активации конкретного
шага.
Механизм выделения Driver.js объединяет точное позиционирование, анимацию и настраиваемый визуальный стиль, создавая мощный инструмент для интерактивного обучения пользователей и навигации по сложным интерфейсам. Он позволяет управлять каждым шагом, обеспечивая как последовательное, так и динамическое выделение элементов, а также глубокую кастомизацию внешнего вида и поведения подсветки.