Конструктор Waypoint является основной точкой входа для создания наблюдателей за элементами на странице. Он позволяет отслеживать положение DOM-элементов относительно области видимости и запускать определённые функции при достижении заданного положения. Синтаксис конструктора выглядит следующим образом:
var waypoint = new Waypoint(options);
где options — объект с настройками.
element: document.getElementById('myElement')
direction), которое может быть 'down' или
'up'.handler: function(direction) {
console.log('Waypoint сработал при движении:', direction);
}
offset: '50%' // 50% высоты окна
offset: 200 // 200px от верха
window.context: document.getElementById('scrollContainer')
true.enabled: false
group: 'stickyElements'
true,
waypoint отслеживает горизонтальную прокрутку вместо вертикальной.horizontal: true
Вертикальный waypoint с 100px смещением:
var waypoint = new Waypoint({
element: document.getElementById('section1'),
handler: function(direction) {
console.log('Секция достигнута, направление:', direction);
},
offset: 100
});
Waypoint, срабатывающий при прокрутке контейнера:
var waypoint = new Waypoint({
element: '.item',
handler: function(direction) {
this.element.classList.toggle('active', direction === 'down');
},
context: document.getElementById('scrollContainer')
});
Горизонтальный waypoint:
var waypoint = new Waypoint({
element: document.getElementById('slide'),
handler: function(direction) {
console.log('Слайд достигнут:', direction);
},
horizontal: true
});
waypoint.enable();
waypoint.disable();
waypoint.destroy();
Waypoint.refreshAll();
resize
окна.offset: function() {
return this.element.clientHeight / 2;
}
horizontal: true.direction,
что позволяет создавать сложные интерактивные сценарии, например,
анимации при прокрутке вверх и вниз.Waypoint поддерживает концепцию групп. Группа собирает несколько waypoint’ов и управляет их порядком срабатывания. Это особенно полезно для последовательной анимации элементов:
var wp1 = new Waypoint({
element: '#item1',
handler: function(direction) {
console.log('Item 1', direction);
},
group: 'itemsGroup'
});
var wp2 = new Waypoint({
element: '#item2',
handler: function(direction) {
console.log('Item 2', direction);
},
group: 'itemsGroup'
});
// Все waypoint'ы в 'itemsGroup' будут срабатывать в порядке очереди
Waypoint.refreshAll() после
динамического изменения DOM, чтобы корректно пересчитать позиции
элементов.Этот конструктор является мощным инструментом для реализации интерактивного поведения при прокрутке, позволяя создавать динамические эффекты, «липкие» блоки и анимации на основе положения элементов на странице.