Метод animateScroll() является ключевым инструментом
библиотеки Smooth Scroll для программного управления прокруткой страницы
или отдельных элементов. Его основная цель — обеспечить плавное
перемещение к указанной позиции или элементу без резких прыжков,
создавая эффект естественного скролла.
Синтаксис метода выглядит следующим образом:
smoothScroll.animateScroll(target, options);
target — целевой элемент или
координата, к которой будет выполняться прокрутка. Может быть:
document.querySelector('#section1'))500)'#section1')options — объект с дополнительными
параметрами анимации.
Объект options позволяет детально контролировать
поведение скролла. Основные свойства:
speed (number) — скорость
прокрутки в миллисекундах. По умолчанию 500.
offset (number) — смещение
от верхней границы окна браузера. Позволяет корректировать позицию
элемента при фиксированных шапках.
easing (string|function) —
функция сглаживания анимации. Библиотека поддерживает стандартные
кривые, например:
"linear" — равномерная скорость"easeInQuad" — ускорение в начале"easeOutCubic" — замедление к концуcallback (function) —
функция, вызываемая после завершения прокрутки.
Пример использования с опциями:
smoothScroll.animateScroll(document.querySelector('#section2'), {
speed: 800,
offset: 100,
easing: 'easeInOutCubic',
callback: function() {
console.log('Прокрутка завершена');
}
});
Метод animateScroll() позволяет прокручивать как к
конкретному элементу, так и к числовой координате.
Пример прокрутки к элементу:
const targetElement = document.querySelector('#about');
smoothScroll.animateScroll(targetElement);
Пример прокрутки к координате страницы:
smoothScroll.animateScroll(1200, { speed: 1000 });
При прокрутке к координате важно учитывать текущую позицию и возможное смещение из-за фиксированных элементов.
Фиксированные элементы, такие как шапки, могут перекрывать целевой
элемент при прокрутке. Для этого используется свойство
offset:
smoothScroll.animateScroll('#contact', {
offset: 80,
speed: 700
});
В данном примере целевой элемент будет виден ниже фиксированной шапки высотой 80 пикселей.
Кривые сглаживания (easing) определяют динамику
анимации: как скорость меняется от начала до конца. Библиотека Smooth
Scroll поддерживает несколько предустановленных функций, а также
допускает использование собственной функции:
smoothScroll.animateScroll('#services', {
easing: function(t, b, c, d) {
return c*(t/=d)*t + b; // Пример квадратичной функции easeIn
},
speed: 600
});
Аргументы функции:
t — текущее время анимацииb — начальная позицияc — изменение позицииd — общая продолжительность анимацииСвойство callback позволяет запускать дополнительные
действия после завершения анимации:
smoothScroll.animateScroll('#portfolio', {
callback: function() {
console.log('Прокрутка к портфолио завершена');
// Можно запускать анимации элементов на странице
}
});
Это полезно для динамических эффектов, загрузки контента или запуска внутренних анимаций.
smoothScroll.animateScroll('#team', {
speed: 1200,
offset: 50,
easing: 'easeOutQuart'
});
smoothScroll.animateScroll(2000, {
speed: 1500,
callback: function() {
alert('Вы достигли нужной позиции!');
}
});
smoothScroll.animateScroll('#footer', {
speed: 900,
easing: function(t, b, c, d) {
return c*(t/=d)*(2-t) + b; // easeInOut
}
});
animateScroll() работает с любыми блоками,
поддерживающими прокрутку, включая document.body и
отдельные контейнеры с overflow: auto.speed и
easing, подбирая оптимальные значения для разных размеров
экранов.callback позволяет синхронизировать другие анимации с
завершением прокрутки, что особенно актуально для лендингов и
SPA-приложений.Метод animateScroll() является основным инструментом
программного управления прокруткой в Smooth Scroll, предоставляя полный
контроль над скоростью, динамикой и точкой назначения, обеспечивая
профессиональный уровень UX на сайте.