Smooth Scroll — это библиотека для плавного скроллинга по странице, которая позволяет не только анимировать переход к элементам, но и отслеживать различные события, происходящие в процессе скролла. Логирование этих событий играет ключевую роль при отладке и настройке взаимодействия интерфейса.
Smooth Scroll предоставляет несколько встроенных событий, которые
можно перехватывать с помощью методов onStart,
onScroll, onComplete и onCancel.
Каждое событие содержит объект данных с информацией о текущем состоянии
анимации:
import SmoothScroll from 'smooth-scroll';
const scroll = new SmoothScroll('a[href*="#"]', {
speed: 800,
speedAsDuration: true,
offset: 50,
clip: true,
updateURL: true,
popstate: true,
// Логирование событий
onStart: function (anchor, toggle) {
console.log('Скролл начат к элементу:', anchor);
},
onScroll: function (position) {
console.log('Текущая позиция прокрутки:', position);
},
onComplete: function (anchor, toggle) {
console.log('Скролл завершён к элементу:', anchor);
},
onCancel: function () {
console.log('Скролл был прерван');
}
});
В этом примере каждое событие выводит в консоль подробную информацию о ходе анимации. Использование таких логов помогает анализировать поведение интерфейса при различных сценариях.
Для более сложного проекта может потребоваться фильтрация событий. Можно внедрить собственную функцию логирования, которая будет обрабатывать данные в зависимости от типа события и текущих условий:
function logEvent(type, data) {
const timestamp = new Date().toISOString();
switch(type) {
case 'start':
console.info(`[${timestamp}] Начало скролла к элементу:`, data.anchor);
break;
case 'scroll':
console.debug(`[${timestamp}] Прогресс скролла:`, data.progress, 'Позиция:', data.position);
break;
case 'complete':
console.info(`[${timestamp}] Скролл завершён на элементе:`, data.anchor);
break;
case 'cancel':
console.warn(`[${timestamp}] Скролл отменён`);
break;
}
}
const scroll = new SmoothScroll('a[href*="#"]', {
speed: 600,
offset: 20,
onStart: (anchor) => logEvent('start', {anchor}),
onScroll: (position, progress) => logEvent('scroll', {position, progress}),
onComplete: (anchor) => logEvent('complete', {anchor}),
onCancel: () => logEvent('cancel', {})
});
Такой подход позволяет стандартизировать формат логов, добавлять временные метки и фильтровать сообщения по уровню важности.
Smooth Scroll позволяет передавать дополнительные данные через атрибуты HTML или параметры и использовать их в логах. Например, можно отслеживать ID элемента или тип ссылки:
<a href="#section1" data-section="hero">Перейти к Hero</a>
onStart: function(anchor) {
const sectionName = anchor.dataset.section || 'неизвестно';
console.log('Скролл к секции:', sectionName);
}
Это особенно полезно при большом количестве якорей на странице, когда необходимо понимать, какая именно часть интерфейса была задействована.
Логи Smooth Scroll могут быть автоматически отправлены в аналитические системы. Например, для Google Analytics или собственной системы сбора событий:
onComplete: function(anchor) {
const section = anchor.id || anchor.dataset.section;
if (window.gtag) {
gtag('event', 'scroll_complete', { 'section': section });
}
}
Таким образом, логирование не ограничивается только консолью — данные становятся частью метрик взаимодействия с интерфейсом, что позволяет выявлять узкие места и оптимизировать пользовательский опыт.
console.log в продакшене для частых
событий onScroll, так как это может замедлять
анимацию.Логирование в Smooth Scroll предоставляет полный контроль над поведением прокрутки, помогает отлаживать интерфейс и интегрировать пользовательские действия в аналитические системы. Оно позволяет отслеживать каждый этап анимации и получать точные данные о взаимодействии с контентом.