Библиотека Waypoints предоставляет гибкую систему
отслеживания положения элементов на странице при скролле. Основной
механизм работы строится вокруг создания «точек»
(waypoints), которые срабатывают при достижении
определённой позиции на странице. Опции конфигурации позволяют тонко
настраивать поведение этих точек.
elementОбязательная опция. Указывает DOM-элемент, на котором будет установлен waypoint. Пример:
var waypoint = new Waypoint({
element: document.getElementById('section1'),
handler: function(direction) {
console.log('Waypoint сработал', direction);
}
});
HTMLElementhandlerФункция, которая выполняется при срабатывании waypoint. Принимает
один аргумент direction, который может быть
"down" или "up":
handler: function(direction) {
if (direction === 'down') {
console.log('Элемент виден при скролле вниз');
} else {
console.log('Элемент виден при скролле вверх');
}
}
Functionthis внутри стрелочной функции будет
ссылаться на внешний контекст, а не на waypoint.offsetПозволяет настроить, когда именно срабатывает waypoint относительно верхней границы окна браузера.
Типы значений:
Число (в пикселях) – фиксированное смещение от верха окна:
offset: 100 // срабатывает когда верх элемента на 100px ниже верхней границы окнаСтрока с процентом – относительно высоты окна:
offset: '50%' // срабатывает, когда элемент достигает середины окнаФункция – возвращает динамическое значение:
offset: function() {
return this.element.clientHeight / 2;
}Особенности: При изменении размера окна
рекомендуется пересоздавать waypoint или использовать метод
Waypoint.refreshAll().
contextПозволяет задать родительский элемент скролла,
отличный от window. По умолчанию waypoint отслеживает
скролл всей страницы.
var waypoint = new Waypoint({
element: document.getElementById('section2'),
handler: function() { console.log('Waypoint в контейнере'); },
context: document.getElementById('scrollable-container')
});
HTMLElementoverflow: auto).window.continuousУправляет срабатыванием waypoint, когда элемент пересекает точку несколько раз подряд.
Booleantruecontinuous: false
Описание:
true – waypoint может срабатывать несколько раз при
быстром скролле через точку.false – waypoint срабатывает только один раз при
пересечении.enabledПозволяет включать или отключать waypoint без его удаления.
Booleanvar waypoint = new Waypoint({...});
waypoint.disable(); // отключить waypoint
waypoint.enable(); // включить снова
groupСлужит для объединения нескольких waypoint в одну группу, что влияет на порядок срабатывания.
Stringgroup: 'sections'
Назначение:
Waypoint.disableGroup() и
Waypoint.enableGroup() позволяют управлять сразу всеми
waypoint в группе.horizontalОпция для горизонтального скролла. По умолчанию отслеживается вертикальный скролл.
Booleanfalsehorizontal: true
triggerOnceПозволяет сделать waypoint одноразовым.
BooleantriggerOnce: true
enabled,
destroy и управление жизненным цикломWaypoints предоставляют методы для динамического управления:
waypoint.disable(); // отключает
waypoint.enable(); // включает
waypoint.destroy(); // удаляет waypoint
destroy() полностью удаляет waypoint и освобождает
ресурсы.disable()/enable() позволяют временно
приостановить обработку скролла.var waypoint = new Waypoint({
element: document.getElementById('feature'),
handler: function(direction) {
console.log('Появление блока feature', direction);
},
offset: '75%',
context: document.getElementById('scroll-container'),
continuous: false,
group: 'features',
horizontal: false,
triggerOnce: true
});
В этом примере:
scroll-container.features для управления
порядком срабатывания.Настройка этих опций позволяет гибко адаптировать Waypoints под любые сценарии: от ленивой подгрузки контента до сложных анимаций при прокрутке.