Метод cancelScroll() является ключевым
инструментом библиотеки Smooth Scroll для управления текущими анимациями
прокрутки. Его основное предназначение — немедленно остановить
любую активную анимацию, предотвращая дальнейшее движение
страницы к целевому элементу. Это особенно важно в интерфейсах с
динамическими изменениями контента или когда пользователь решает вручную
прервать автоматическую прокрутку.
smoothScroll.cancelScroll();
smoothScroll — экземпляр Smooth
Scroll, созданный через конструктор
new SmoothScroll().Прерывание текущей анимации Если в момент вызова метода происходит плавная прокрутка к якорю или элементу страницы, она останавливается мгновенно. Положение страницы фиксируется на текущем моменте.
Сброс внутренних таймеров Smooth Scroll
использует requestAnimationFrame для анимации. Вызов
cancelScroll() очищает все активные
таймеры и внутренние состояния, связанные с текущей анимацией.
Безопасность повторных вызовов Метод можно вызывать несколько раз подряд, без риска возникновения ошибок или конфликтов в логике прокрутки.
const scroll = new SmoothScroll('a[href*="#"]', {
speed: 600,
offset: 50
});
document.querySelector('#stopButton').addEventListener('click', () => {
scroll.cancelScroll();
});
В этом примере, если пользователь инициировал плавную прокрутку по
ссылке и нажимает кнопку с id="stopButton", текущая
анимация мгновенно прекращается.
const scroll = new SmoothScroll('a[href*="#"]', { speed: 800 });
document.querySelector('#hoverArea').addEventListener('mouseenter', () => {
scroll.cancelScroll();
});
При наведении на область #hoverArea прокрутка
останавливается, предотвращая нежелательное движение страницы во время
интерактивных действий пользователя.
Совместимость с настройками Smooth Scroll Если у
экземпляра включены опции speed или offset,
метод cancelScroll() не влияет на их
значения. Он только прерывает текущую анимацию.
Работа с асинхронными событиями В сценариях, где
анимация запускается через setTimeout или промисы,
cancelScroll() прекращает только ту
анимацию, которая уже стартовала. Запланированные анимации не будут
автоматически отменены.
Взаимодействие с пользовательским скроллом После вызова метода пользователь может немедленно продолжить скроллинг вручную, без задержек или конфликтов с библиотекой.
Метод cancelScroll() обеспечивает
полный контроль над текущими анимациями Smooth Scroll, позволяя
безопасно прерывать их в любой момент. Это критически важно для создания
отзывчивых и предсказуемых интерфейсов, где прокрутка должна подчиняться
логике пользователя и состоянию страницы.
Использование cancelScroll()
рекомендуется в сочетании с событиями интерфейса, динамическими
изменениями DOM и сценариями, где анимация может конфликтовать с
действиями пользователя.