В библиотеке Waypoints параметр group
используется для организации нескольких точек остановки (waypoints) в
логические объединения. Он позволяет управлять поведением связанных
точек, обеспечивая синхронное срабатывание и управление их событиями.
Это особенно полезно в сложных интерфейсах с множеством элементов, где
нужно контролировать последовательность срабатываний.
groupКаждая точка остановки в Waypoints может быть привязана к
группе через параметр group. Если группа
не задана, Waypoint будет относиться к стандартной группе с именем
"default". С помощью именованных групп можно:
flush().Пример создания waypoint с указанием группы:
var waypoint = new Waypoint({
element: document.getElementById('section1'),
handler: function(direction) {
console.log('Waypoint сработал в направлении: ' + direction);
},
offset: '50%',
group: 'sectionsGroup'
});
В этом примере waypoint привязан к группе sectionsGroup.
Все waypoint-ы с одинаковым именем группы могут быть обработаны
одновременно при вызове метода Waypoint.Group.flush().
flush()Метод flush() позволяет немедленно сработать всем
waypoint-ам внутри указанной группы. Это полезно для инициализации
состояния или при динамическом добавлении контента на страницу.
Waypoint.Group.findByName('sectionsGroup').flush();
findByName('sectionsGroup') возвращает объект группы
waypoint-ов с именем sectionsGroup.flush() инициирует срабатывание всех waypoint-ов внутри
этой группы в соответствии с их текущим положением на странице.Когда несколько waypoint-ов принадлежат одной группе, Waypoints гарантирует последовательное срабатывание их обработчиков. Важные моменты:
flush(), все
waypoint-ы в группе будут проверены на триггеринг независимо от их
индивидуального offset.Пример:
var sections = document.querySelectorAll('.section');
sections.forEach(function(section, index) {
new Waypoint({
element: section,
handler: function(direction) {
console.log('Секция ' + index + ' сработала');
},
offset: '75%',
group: 'pageSections'
});
});
// Принудительное срабатывание всех waypoint-ов группы
Waypoint.Group.findByName('pageSections').flush();
В этом примере при вызове flush() сразу проверяются все
.section и вызываются их обработчики, если условие
срабатывания выполнено.
Синхронизация анимаций при скролле Все waypoint-ы, относящиеся к анимациям одной секции, помещаются в одну группу, чтобы их обработчики запускались одновременно и согласованно.
Динамическая подгрузка контента После добавления
элементов на страницу можно вызвать flush() для группы,
чтобы новые waypoint-ы сразу активировались без необходимости
скролла.
Постепенная активация интерфейсов Группы позволяют запускать цепочку анимаций или изменения классов только после срабатывания всех waypoint-ов внутри группы.
headerAnimations, sectionHighlights)
для удобства поддержки кода.flush() осторожно:
принудительное срабатывание всех waypoint-ов может вызвать повторные
эффекты, если обработчики изменяют DOM.Внутри библиотеки Waypoints каждая группа представлена объектом
Waypoint.Group. Этот объект хранит массив waypoint-ов и
обеспечивает следующие методы:
add(waypoint) – добавляет waypoint в группу.remove(waypoint) – удаляет waypoint из группы.flush() – проверяет все waypoint-ы на триггеринг и
вызывает их обработчики при выполнении условий.Таким образом, group в Waypoints — это мощный инструмент
для управления множеством waypoint-ов одновременно, позволяющий
создавать сложные, отзывчивые интерфейсы без дублирования кода.