Waypoints — это мощная библиотека для отслеживания положения
элементов на странице при скролле. Одной из ключевых возможностей
является использование групп (groups) для
объединения нескольких waypoint-объектов и управления их поведением
коллективно. Группы позволяют контролировать порядок срабатывания,
устанавливать задержки и синхронизировать события.
Каждый waypoint при создании может быть присоединен к определенной группе:
var waypoint = new Waypoint({
element: document.getElementById('section1'),
handler: function(direction) {
console.log('Waypoint сработал:', direction);
},
group: 'exampleGroup'
});
"default".Использование групп позволяет создавать логически связанные наборы waypoint и управлять ими централизованно.
Waypoints предоставляет глобальный объект Waypoint.Group, через который можно управлять группами:
var group = Waypoint.Group.findOrCreate({ name: 'exampleGroup' });
console.log(group.name); // "exampleGroup"
Waypoint автоматически добавляется в указанную группу при создании. Для изменения группы после создания можно использовать метод:
waypoint.group.add(waypoint);
Waypoints внутри группы хранятся в порядке, который определяет
последовательность срабатываний. По умолчанию сортировка происходит по
вертикальному положению элемента на странице (top).
Можно явно вызвать сортировку:
group.flush();
Метод flush() пересортирует все waypoint в группе и
применит обновленные позиции.
Группы позволяют управлять, каким образом waypoint срабатывают относительно друг друга:
Пример настройки:
var group = Waypoint.Group.findOrCreate({ name: 'staggerGroup' });
// Сортировка элементов по позиции
group.flush();
// Цикл по waypoint в группе для добавления кастомной задержки
group.waypoints.forEach(function(wp, index) {
wp.handler = function(direction) {
setTimeout(function() {
console.log('Сработал waypoint №' + index + ' в направлении: ' + direction);
}, index * 200); // задержка 200 мс между waypoint
};
});
Чтобы удалить waypoint, можно использовать метод
destroy:
waypoint.destroy(); // удаляет waypoint и исключает его из группы
Если нужно удалить все waypoint из группы:
group.waypoints.forEach(function(wp) {
wp.destroy();
});
После этого группа может оставаться пустой, но её объект всё ещё доступен в системе Waypoints.
Группы особенно полезны в следующих сценариях:
Анимации секций при скролле Несколько элементов одной секции объединяются в группу и анимируются с небольшими задержками для плавного эффекта.
Постепенное отображение списка элементов Например, список статей или карточек товара, где waypoint каждого элемента срабатывает по очереди.
Синхронизация нескольких waypoint с разными обработчиками Группы позволяют централизованно контролировать порядок срабатывания waypoint без необходимости вручную управлять каждой функцией.
group.flush() для обновления позиций waypoint.destroy() для освобождения
памяти. При удалении элементов страницы или при смене контента
удаление waypoint предотвращает утечки памяти.Группы Waypoints позволяют строить сложные взаимодействия и анимации на странице с точным контролем последовательности срабатываний и синхронизацией событий, обеспечивая гибкость в реализации динамических интерфейсов.