Intro.js предоставляет возможности для создания интерактивных пошаговых руководств по интерфейсу веб-приложений. Чтобы эти руководства корректно отображались на мобильных устройствах, необходимо учитывать адаптивность и отзывчивость элементов, а также особенности мобильного UX.
Ключевые моменты, влияющие на адаптивность:
Intro.js предоставляет объект конфигурации options,
который позволяет управлять поведением подсказок и шагов. Для мобильных
устройств важны следующие параметры:
introJs().setOptions({
steps: [
{
element: '#menu',
intro: 'Основное меню приложения',
position: 'bottom'
},
{
element: '#profile',
intro: 'Раздел профиля',
position: 'top'
}
],
tooltipClass: 'customTooltip',
showStepNumbers: false,
exitOnOverlayClick: true,
scrollToElement: true,
hidePrev: true,
hideNext: false
}).start();
Объяснение ключевых параметров:
position – положение подсказки относительно целевого
элемента (top, bottom, left,
right, auto). На мобильных устройствах
рекомендуется использовать auto или динамически менять
позицию в зависимости от доступного пространства.tooltipClass – позволяет задавать кастомные стили
подсказок. Для мобильных можно увеличить размеры шрифта, ширину
подсказки и отступы.scrollToElement – обеспечивает прокрутку страницы к
целевому элементу, что особенно важно на небольших экранах.exitOnOverlayClick – улучшает UX на мобильных
устройствах, позволяя пользователю закрыть подсказку простым
касанием.Для обеспечения оптимального отображения подсказок на разных устройствах используют CSS-медиа-запросы. Пример:
.customTooltip {
max-width: 300px;
font-size: 16px;
line-height: 1.4;
}
@media (max-width: 768px) {
.customTooltip {
max-width: 90%;
font-size: 14px;
padding: 10px;
}
}
Пояснения:
max-width в процентах позволяет тултипу адаптироваться
к ширине экрана.font-size и padding уменьшаются на
мобильных устройствах для улучшения читаемости и визуального
восприятия.Intro.js позволяет задавать динамическое
позиционирование через функцию position(), которая
может определять положение подсказки в зависимости от размеров экрана и
видимости элемента:
introJs().onbeforechange(function(targetElement) {
if (window.innerWidth < 768) {
this._options.steps.forEach(step => {
if(step.element === targetElement) {
step.position = 'auto';
}
});
}
});
Использование auto позволяет библиотеке автоматически
выбирать наилучшее положение подсказки и избегать выхода за пределы
экрана.
На мобильных устройствах элементы интерфейса могут быть частично скрыты. Для корректного отображения шагов:
scrollToElement: trueintroJs().onbeforechange(function(targetElement) {
if (!isElementInViewport(targetElement)) {
targetElement.scrollIntoView({beh * avior: 'smooth', block: 'center'});
}
});
function isElementInViewport(el) {
const rect = el.getBoundingClientRect();
return rect.top >= 0 && rect.bottom <= window.innerHeight;
}
Такой подход предотвращает перекрытие подсказками других важных элементов и обеспечивает удобное взаимодействие на мобильных экранах.
На мобильных устройствах кнопки Next, Back
и Done должны быть достаточно крупными для
касания пальцем. Настройки через CSS:
.customTooltip .introjs-button {
padding: 12px 20px;
font-size: 14px;
}
@media (max-width: 768px) {
.customTooltip .introjs-button {
padding: 14px 24px;
font-size: 16px;
}
}
Также можно скрывать или показывать кнопки в зависимости от шага:
introJs().onafterchange(function(targetElement) {
const nextButton = document.querySelector('.introjs-nextbutton');
if (window.innerWidth < 768 && this._currentStep === 0) {
nextButton.style.display = 'block';
}
});
Для мобильных устройств важно, чтобы подсказки реагировали на
свайпы и касания. Intro.js поддерживает касание через
exitOnOverlayClick, но можно добавить кастомное
поведение:
document.querySelector('.introjs-overlay').addEventListener('touchstart', function() {
introJs().exit();
});
Такой подход предотвращает фрустрацию пользователя, когда подсказка перекрывает экран и не дает продолжить взаимодействие.
Использование Intro.js на мобильных устройствах требует сочетания динамических настроек библиотек, CSS-медиа-запросов и контроля видимости элементов. Оптимизация включает:
Такой подход позволяет сохранить удобство пошаговых руководств на устройствах с маленькими экранами и обеспечить комфортное взаимодействие с интерфейсом.