Параметр offset в библиотеке Waypoints
определяет момент срабатывания обработчика при прокрутке страницы
относительно верхней границы окна браузера или относительно самого
элемента. Он задаёт смещение, после которого триггер события считается
достигнутым. Этот параметр критически важен для точного контроля
появления и исчезновения элементов при скролле, особенно в сложных
интерфейсах с анимацией или ленивой загрузкой контента.
offsetoffset можно задавать несколькими способами:
В пикселях Значение указывается как целое число, например:
var waypoint = new Waypoint({
element: document.getElementById('section1'),
handler: function(direction) {
console.log('Элемент достигнут');
},
offset: 100
});
В этом примере обработчик сработает, когда верх элемента окажется на 100 пикселей ниже верхней границы окна просмотра.
В процентах окна Можно использовать строку с процентом:
offset: '50%'
Процент вычисляется относительно высоты видимой области браузера.
Например, '50%' означает, что обработчик сработает, когда
верх элемента окажется на середине окна.
Отрицательные значения Позволяют срабатывать раньше, чем элемент полностью появится:
offset: '-20%'
Элемент будет считаться достигнутым, когда верх его блока находится на 20% выше верхней границы окна.
Функция Можно использовать функцию для динамического вычисления смещения:
offset: function() {
return this.element.clientHeight / 2;
}
Такой подход полезен, когда смещение зависит от размеров элемента или других параметров страницы, которые могут меняться при ресайзе.
offsetНаправление прокрутки Обработчик получает
параметр direction со значением 'down' или
'up', что позволяет различать скролл вниз и вверх. Параметр
offset учитывается одинаково для обоих направлений, но
логика приложения может реагировать по-разному.
Взаимодействие с continuous Если
свойство continuous включено, обработчики будут срабатывать
на каждом waypoint в потоке, иначе — только один раз на пересечение.
offset при этом влияет на точку срабатывания независимо от
continuous.
Процентные значения и ресайз окна Процентные смещения автоматически пересчитываются при изменении размеров окна. Это гарантирует корректное срабатывание событий при адаптивной верстке.
Ленивая загрузка изображений
var imgWaypoint = new Waypoint({
element: document.getElementById('lazy-image'),
handler: function() {
this.element.src = this.element.dataset.src;
},
offset: '75%'
});
Изображение загружается, когда пользователь прокручивает страницу на 75% от высоты окна к элементу.
Анимация появления блока
var animateWaypoint = new Waypoint({
element: document.querySelector('.animated-section'),
handler: function(direction) {
if (direction === 'down') {
this.element.classList.add('fade-in');
} else {
this.element.classList.remove('fade-in');
}
},
offset: '30%'
});
Эффект срабатывает немного раньше, чем элемент полностью попадает в видимую область.
Динамическое смещение для разных экранов
var responsiveWaypoint = new Waypoint({
element: document.getElementById('hero'),
handler: function() {
console.log('Hero section reached');
},
offset: function() {
return window.innerWidth < 768 ? '20%' : '50%';
}
});
Смещение меняется в зависимости от ширины окна, обеспечивая оптимальное взаимодействие на мобильных и десктопных устройствах.
Параметр offset — это гибкий инструмент контроля момента
срабатывания Waypoints. Его правильное использование позволяет
реализовать сложные анимации, ленивую загрузку и динамические интерфейсы
без лишнего кода и багов, связанных с неправильным позиционированием
элементов на странице.