Intro.js предоставляет удобный механизм для создания интерактивных пошаговых подсказок на веб-страницах. По умолчанию библиотека использует собственные стили, которые могут не совпадать с дизайном конкретного проекта. Для достижения гармоничного внешнего вида часто требуется переопределять стандартные CSS-правила.
Стандартные стили Intro.js находятся в файле introjs.css
и определяют:
.introjs-tooltip, .introjs-tooltiptext.introjs-arrow.introjs-nextbutton, .introjs-prevbutton,
.introjs-skipbutton.introjs-overlay, .introjs-helperLayerВажно понимать, что библиотека строит подсказки с использованием нескольких слоев:
Для изменения цвета фона и текста подсказки используется следующий подход:
/* Фон подсказки */
.introjs-tooltip {
background-color: #2c3e50 !important;
color: #ecf0f1 !important;
border-radius: 8px !important;
padding: 15px !important;
}
/* Текст подсказки */
.introjs-tooltiptext {
font-size: 16px !important;
line-height: 1.5 !important;
}
!important нужен для того, чтобы переопределить
встроенные стили Intro.js, которые имеют более высокую
специфичность.
Кнопки «Next», «Previous» и «Skip» можно стилизовать индивидуально:
.introjs-nextbutton {
background-color: #3498db !important;
color: white !important;
border: none !important;
border-radius: 4px !important;
padding: 8px 12px !important;
cursor: pointer !important;
}
.introjs-prevbutton {
background-color: #95a5a6 !important;
color: white !important;
border-radius: 4px !important;
padding: 8px 12px !important;
}
.introjs-skipbutton {
background-color: transparent !important;
color: #e74c3c !important;
text-decoration: underline !important;
padding: 6px 10px !important;
}
Эти правила позволяют полностью контролировать внешний вид элементов управления, включая отступы, цвет текста, рамки и закругление.
Стрелки подсказок формируются псевдоэлементами CSS. Их цвет и размер можно задать так:
.introjs-arrow {
border-top-color: #2c3e50 !important; /* для подсказок снизу */
border-right-color: #2c3e50 !important; /* для подсказок слева */
}
Для комплексного контроля позиционирования подсказки можно
использовать свойства top, left и
transform:
.introjs-tooltipReferenceLayer {
transform: translate(-10px, -5px) !important;
}
Слой затемнения (overlay) может быть стилизован для соответствия дизайну сайта:
.introjs-overlay {
background-color: rgba(0, 0, 0, 0.7) !important;
}
.introjs-helperLayer {
border: 2px solid #3498db !important;
border-radius: 6px !important;
box-shadow: 0 0 15px rgba(52, 152, 219, 0.5) !important;
}
Такой подход позволяет выделять элементы более выразительно, не влияя на основное содержимое страницы.
Intro.js поддерживает возможность подключения собственных тем. Для этого:
introjs-theme.css.introjs.css в HTML:<link rel="stylesheet" href="introjs.css">
<link rel="stylesheet" href="introjs-theme.css">
Порядок подключения критичен: последующие стили перекрывают предыдущие.
Intro.js также позволяет задавать классы через API:
const intro = introJs();
intro.setOptions({
tooltipClass: 'custom-tooltip',
highlightClass: 'custom-highlight',
overlayClass: 'custom-overlay'
});
intro.start();
В CSS затем описываются эти классы:
.custom-tooltip {
background-color: #1abc9c !important;
color: #fff !important;
border-radius: 10px !important;
}
.custom-highlight {
border: 2px dashed #16a085 !important;
box-shadow: 0 0 20px rgba(22, 160, 133, 0.5) !important;
}
.custom-overlay {
background-color: rgba(0, 0, 0, 0.6) !important;
}
Этот метод удобен для динамической смены тем и индивидуального оформления отдельных подсказок без изменения глобальных стилей.
Intro.js применяет CSS-анимации для плавного появления подсказок. Их можно переопределить:
.introjs-fade {
transition: opacity 0.5s ease-in-out !important;
}
.introjs-tooltip {
animation: slideIn 0.4s ease forwards !important;
}
@keyframes slideIn {
from { opacity: 0; transform: translateY(-10px); }
to { opacity: 1; transform: translateY(0); }
}
Это позволяет создавать уникальные эффекты появления, соответствующие визуальному стилю сайта.
Подсказки Intro.js можно адаптировать под разные экраны через медиазапросы:
@media (max-width: 768px) {
.introjs-tooltip {
width: 90% !important;
font-size: 14px !important;
padding: 10px !important;
}
.introjs-nextbutton, .introjs-prevbutton {
padding: 6px 8px !important;
font-size: 14px !important;
}
}
Таким образом достигается корректное отображение подсказок на мобильных устройствах и планшетах.
!important только при
необходимости, чтобы избежать конфликтов с другими
стилями.Эти методы позволяют полностью контролировать визуальное оформление интерактивных подсказок Intro.js и интегрировать их в любой дизайн.