Driver.js предоставляет гибкую систему кастомизации внешнего вида
шагов интерактивного руководства с помощью CSS. Основным инструментом
для этого является параметр className,
который позволяет назначить пользовательские классы как отдельным шагам,
так и всему драйверу в целом.
Пример базового использования:
const driver = new Driver({
className: 'custom-driver'
});
driver.defineSteps([
{
element: '#button-start',
popover: {
title: 'Начало',
description: 'Нажмите эту кнопку, чтобы начать',
},
className: 'highlight-step'
}
]);
В этом примере весь драйвер получает класс
custom-driver, а конкретный шаг дополнительно получает
highlight-step.
Driver.js использует стандартные CSS-классы для структурных элементов:
.driver-popover — контейнер подсказки..driver-target — обводка вокруг целевого элемента..driver-overlay — затемнение остальной части
экрана..driver-close-btn — кнопка закрытия подсказки..driver-title — заголовок в поповере..driver-description — текст описания.Любой из этих классов можно переопределить через собственный CSS, чтобы изменить внешний вид без изменения логики работы Driver.js.
Пример кастомного стиля:
.custom-driver .driver-popover {
background-color: #2c3e50;
color: #ecf0f1;
border-radius: 10px;
padding: 20px;
}
.custom-driver .driver-target {
border: 3px solid #e74c3c;
border-radius: 8px;
}
Для тонкой настройки визуальных эффектов каждого шага можно
использовать свойство className внутри
объекта шага. Это позволяет, например, изменять фон или тень только для
конкретной подсказки:
driver.defineSteps([
{
element: '#profile-pic',
popover: {
title: 'Аватар',
description: 'Здесь отображается ваша фотография',
},
className: 'avatar-step'
},
{
element: '#settings',
popover: {
title: 'Настройки',
description: 'Управление профилем и предпочтениями',
},
className: 'settings-step'
}
]);
Соответствующие CSS:
.avatar-step .driver-popover {
background-color: #3498db;
color: #fff;
}
.settings-step .driver-popover {
background-color: #1abc9c;
color: #2c3e50;
}
Driver.js позволяет динамически изменять классы шагов в процессе
выполнения через методы onNext,
onPrevious,
onHighlightStarted:
driver.defineSteps([
{
element: '#feature',
popover: {
title: 'Особенность',
description: 'Описание функции',
},
onHighlightStarted: (element) => {
element.classList.add('animated-highlight');
},
onNext: (element) => {
element.classList.remove('animated-highlight');
}
}
]);
В этом случае целевой элемент получает класс
animated-highlight только на время показа шага, что
позволяет применять анимации или временные эффекты.
Помимо классов шагов, можно задавать глобальные классы для всего Driver.js, влияющие на overlay, подсказки и кнопки управления:
const driver = new Driver({
className: 'my-global-driver',
stageBackground: 'rgba(0,0,0,0.8)',
allowClose: true
});
CSS для глобальных изменений:
.my-global-driver .driver-overlay {
background-color: rgba(0,0,0,0.6);
}
.my-global-driver .driver-close-btn {
color: #e74c3c;
font-size: 18px;
}
Driver.js автоматически сохраняет стандартные классы при назначении
пользовательских. Это означает, что переопределяя стили через
className, необходимо учитывать существующие селекторы
.driver-popover, .driver-target и другие.
Рекомендуется использовать вложенные селекторы, чтобы изменения не
ломали базовую функциональность.
Пример комбинированного стиля:
.custom-step .driver-popover.driver-popover {
border: 2px dashed #9b59b6;
box-shadow: 0 4px 20px rgba(0,0,0,0.3);
}
Такой подход сохраняет совместимость с обновлениями библиотеки и минимизирует конфликты с внутренними стилями.
className на уровне шага,
если нужны уникальные визуальные эффекты для отдельных элементов.className при
необходимости изменить весь интерфейс подсказок..driver-popover, .driver-target, чтобы
сохранить базовую функциональность подсказок.Эта система позволяет полностью контролировать визуальный стиль интерактивных подсказок и обеспечивать единый дизайн интерфейса при использовании Driver.js.