Intro.js предоставляет гибкие инструменты управления скроллингом при создании интерактивных туров по веб-странице. Понимание параметров скроллинга позволяет обеспечить корректное позиционирование подсказок и комфортное отображение элементов вне видимой области окна браузера.
Параметр scrollToElement отвечает за автоматическую
прокрутку страницы к элементу, вокруг которого создаётся шаг тура. По
умолчанию значение true, что означает, что Intro.js будет
автоматически скроллить страницу, чтобы целевой элемент оказался
видимым.
introJs().setOptions({
steps: [
{
element: '#feature1',
intro: 'Это первый элемент',
position: 'right'
}
],
scrollToElement: true
}).start();
Если требуется отключить автоматический скроллинг, достаточно
присвоить параметру значение false. Это полезно, когда на
странице реализованы собственные механизмы прокрутки или когда
позиционирование элемента фиксировано:
introJs().setOptions({
scrollToElement: false
}).start();
scrollPadding определяет отступ между верхним краем
видимой области и элементом, к которому скроллит страница. Значение
задаётся в пикселях и по умолчанию равно 0. Настройка этого параметра
позволяет избежать ситуации, когда подсказка перекрывает фиксированные
элементы интерфейса, например, шапку сайта.
introJs().setOptions({
scrollPadding: 50
}).start();
Это гарантирует, что при автоматическом скроллинге элемент будет находиться на 50 пикселей ниже верхней границы окна браузера, создавая визуально комфортное пространство вокруг подсказки.
Метод scrollToStep позволяет вручную управлять
прокруткой к конкретному шагу тура. Он принимает индекс шага и выполняет
плавную прокрутку к элементу:
const intro = introJs();
intro.start();
intro.onafterchange(function() {
intro.scrollToStep(this._currentStep);
});
Использование scrollToStep удобно для динамически
генерируемых шагов или при необходимости программного управления
позицией подсказки без изменения глобальных опций.
Для более плавной анимации прокрутки используется параметр
smoothScroll. Включение плавного скроллинга делает движение
страницы к целевому элементу менее резким и более естественным:
introJs().setOptions({
smoothScroll: true
}).start();
По умолчанию плавная прокрутка отключена (false).
Включение опции особенно актуально для длинных страниц, где мгновенный
скроллинг может дезориентировать пользователя.
Более детальная настройка скроллинга достигается через объект
scrollToElementOptions, который передается внутреннему
методу scrollIntoView. С помощью этого объекта можно
управлять поведением скроллинга, например:
behavior: 'auto' или
'smooth'block: 'start', 'center',
'end', 'nearest'inline: 'start', 'center',
'end', 'nearest'Пример использования:
introJs().setOptions({
scrollToElement: true,
scrollToElementOptions: {
beh * avior: 'smooth',
block: 'center'
}
}).start();
В данном случае элемент будет прокручен в центр видимой области с плавной анимацией, что создаёт аккуратное визуальное представление шага.
На страницах с фиксированными шапками, боковыми панелями или
элементами, которые перекрывают контент, важно комбинировать
scrollPadding и scrollToElementOptions. Это
предотвращает перекрытие подсказок и гарантирует, что пользователь видит
целевой элемент полностью.
introJs().setOptions({
scrollToElement: true,
scrollPadding: 70,
scrollToElementOptions: {
beh * avior: 'smooth',
block: 'start'
}
}).start();
При подгрузке элементов через AJAX или при изменении DOM после
запуска тура необходимо вызывать refresh перед
прокруткой:
introJs().refresh();
introJs().scrollToStep(currentStep);
Это позволяет Intro.js корректно определить позицию нового или изменённого элемента и обеспечить точный скроллинг.
Правильная комбинация scrollToElement,
scrollPadding, smoothScroll и
scrollToElementOptions позволяет:
Эти инструменты делают туры на базе Intro.js удобными даже на сложных и динамичных веб-страницах, обеспечивая максимальный контроль над видимостью и позицией целевых элементов.