Shepherd.js позволяет создавать гибкие пошаговые руководства, которые
корректно отображаются на разных устройствах, включая мобильные.
Основной инструмент для оптимизации под маленькие экраны — использование
адаптивных настроек в конфигурации шагов. Каждый шаг
(step) поддерживает объект attachTo, который
задаёт элемент привязки и позицию. Для мобильных устройств позицию часто
стоит менять на top или bottom, чтобы тултип
не выходил за границы экрана.
tour.addStep({
id: 'example-step',
text: 'Пример шага для мобильного экрана',
attachTo: {
element: '.target-element',
on: window.innerWidth < 768 ? 'bottom' : 'right'
}
});
Поддержка медиа-запросов в JS позволяет динамически менять позиции и размеры подсказок без изменения логики шагов. Это важно, если интерфейс приложения сильно меняется на маленьких экранах.
Shepherd.js использует всплывающие элементы (tooltip) с
возможностью задавать ширину, высоту,
отступы и встроенные стили через
объект classes и style. Для маленьких экранов
рекомендуется:
max-width) 90–95% от
ширины окна;position: fixed для предотвращения сдвига
при скролле;arrow) под меньшие
размеры.tour.addStep({
id: 'mobile-size-step',
text: 'Тултип с адаптивной шириной',
classes: 'shepherd-theme-arrows shepherd-transparent-text',
style: {
maxWidth: window.innerWidth < 768 ? '90%' : '400px'
}
});
На маленьких экранах часто возникает ситуация, когда целевой элемент
находится вне видимой области. Shepherd.js имеет встроенный параметр
scrollTo:
scrollTo: true — автоматически прокручивает страницу к
элементу;scrollTo: {beh * avior: 'smooth', block: 'center'} —
позволяет задать плавную прокрутку и положение элемента на экране.tour.addStep({
id: 'scroll-step',
text: 'Шаг с прокруткой к элементу',
attachTo: { element: '#menu', on: 'top' },
scrollTo: { beh * avior: 'smooth', block: 'center' }
});
Использование scrollTo критично для мобильных устройств,
чтобы пользователь видел подсказку целиком и не сталкивался с обрезанным
текстом.
На маленьких экранах большое значение имеет экономия пространства. В Shepherd.js можно:
buttons с text и
action:buttons: [
{ text: 'Далее', action: tour.next },
{ text: 'Назад', action: tour.back }
]
Для мобильных устройств рекомендуется уменьшать число кнопок и
оставлять только ключевые действия (Далее,
Закрыть), чтобы тултип не занимал слишком много места.
Интерфейсы на мобильных устройствах часто динамически меняют размеры
элементов (например, при появлении клавиатуры). Shepherd.js позволяет
обновлять позицию тултипа через метод
updateStepOptions:
tour.currentStep.updateStepOptions({
attachTo: { element: '.target-element', on: 'bottom' }
});
Этот подход гарантирует, что подсказка не окажется за пределами видимой области и корректно отобразится даже после изменения DOM.
Для оптимальной работы на мобильных устройствах важно использовать следующие параметры:
useModalOverlay: true — затемнение фона помогает
пользователю сосредоточиться на подсказке и предотвращает случайные
клики;canClickTarget: false — отключает взаимодействие с
целевым элементом до завершения шага;popperOptions — позволяет вручную задавать смещение
(offset) тултипа для небольших экранов:popperOptions: {
modifiers: [
{ name: 'offset', options: { offset: [0, 10] } },
{ name: 'preventOverflow', options: { padding: 8 } }
]
}
Эти настройки помогают корректно отображать тултипы в ограниченном пространстве, не перекрывая элементы интерфейса.
Shepherd.js поддерживает события show,
hide, complete, которые можно использовать для
адаптивного поведения:
tour.on('show', (event) => {
if (window.innerWidth < 768) {
event.step.updateStepOptions({
classes: 'shepherd-mobile-step'
});
}
});
Это позволяет динамически менять внешний вид и позицию шага при изменении размера экрана или ориентации устройства.
top,
bottom) и динамическое обновление
attachTo;maxWidth и кастомные классы;Эти методы позволяют создавать пошаговые руководства в Shepherd.js, которые остаются удобными и читабельными на любых мобильных устройствах.