Параметр handler является ключевым элементом
конфигурации при создании waypoint с помощью библиотеки Waypoints в
JavaScript. Он определяет функцию, которая будет вызвана каждый
раз, когда указанный элемент пересекает определённую точку
прокрутки. Этот параметр напрямую управляет поведением страницы
при скролле, делая Waypoints мощным инструментом для интерактивных
интерфейсов.
var waypoint = new Waypoint({
element: document.getElementById('example'),
handler: function(direction) {
// действия при достижении элемента
},
offset: '50%'
});
element — DOM-элемент, к которому привязывается
waypoint.handler — функция обратного вызова.offset — точка срабатывания waypoint относительно
начала элемента или окна просмотра.handlerФункция, указанная в handler, получает один параметр:
direction.
handler: function(direction) {
console.log(direction);
}
direction — строка 'down' или
'up', которая показывает направление прокрутки:
'down' — когда элемент пересекает точку прокрутки
сверху вниз.'up' — когда элемент пересекает точку прокрутки снизу
вверх.Это позволяет создавать различное поведение в зависимости от направления скролла, например, анимации, подгрузку контента или изменение стилей.
var waypoint = new Waypoint({
element: document.getElementById('section1'),
handler: function(direction) {
if (direction === 'down') {
this.element.classList.add('highlight');
} else {
this.element.classList.remove('highlight');
}
},
offset: '75%'
});
В этом примере элемент подсвечивается, когда пользователь прокручивает страницу до 75% высоты окна просмотра, и подсветка убирается при прокрутке вверх.
var waypoint = new Waypoint({
element: document.getElementById('loadMore'),
handler: function(direction) {
if (direction === 'down') {
loadAdditionalItems();
}
},
offset: '100%'
});
Функция loadAdditionalItems() будет вызвана только при
прокрутке вниз к нижней границе элемента. Это часто используется для
реализации бесконечной прокрутки.
this внутри
handlerВнутри функции handler объект this
ссылается на текущий waypoint, а не на глобальный
объект. Доступные свойства включают:
this.element — DOM-элемент, к которому привязан
waypoint.this.triggerPoint — точка срабатывания waypoint
относительно начала документа.this.enabled — логическое значение, показывает, активен
ли waypoint.enable(), disable(),
destroy().Пример использования контекста:
var waypoint = new Waypoint({
element: document.getElementById('section2'),
handler: function(direction) {
console.log('Waypoint сработал на элементе:', this.element);
this.destroy(); // удаление waypoint после срабатывания
},
offset: '50%'
});
handlerhandler поддерживает любые JavaScript-операции, включая
асинхронные:
var waypoint = new Waypoint({
element: document.getElementById('asyncSection'),
handler: async function(direction) {
const data = await fetchDataFromServer();
renderData(this.element, data);
},
offset: '60%'
});
Благодаря этому можно динамически подгружать контент или запускать сложные вычисления при прокрутке.
offset — позволяет точнее
контролировать, когда будет вызван handler. Можно задавать
проценты, пиксели или функцию.continuous — определяет, будет ли
handler срабатывать несколько раз подряд при достижении
точки.group — объединяет несколько waypoint
для синхронного срабатывания. В этом случае handler
срабатывает для всех элементов группы.direction, чтобы избежать
дублирования действий при обратном скролле.this.destroy()), чтобы уменьшить
нагрузку.handler не вызывался слишком часто.Параметр handler является ядром Waypoints: он превращает
статические элементы в интерактивные, позволяя точно управлять событиями
при скролле, создавать анимации и динамически изменять страницу в
реальном времени.