Метод context является ключевым инструментом для работы
с экземплярами Waypoint, позволяя управлять и настраивать область, в
пределах которой отслеживаются скролл-события. Каждый Waypoint привязан
к определённому контексту, который по умолчанию
является объектом window. Контекст определяет, когда
триггер срабатывает, исходя из положения элемента относительно этого
контекста.
var waypoint = new Waypoint({
element: document.getElementById('myElement'),
handler: function(direction) {
console.log('Waypoint сработал при скролле ' + direction);
},
context: document.getElementById('scrollContainer')
});
В этом примере context задаётся явно. Это значит, что
Waypoint будет отслеживать положение элемента относительно
элемента scrollContainer, а не окна браузера.
contextКаждый экземпляр Waypoint имеет метод context(), который
позволяет получить объект контекста, связанный с конкретным waypoint.
Это может быть полезно, если необходимо узнать или использовать текущий
контекст в дальнейшем коде.
var wpContext = waypoint.context();
console.log(wpContext.element); // HTML-элемент, который является контейнером для скролла
Метод возвращает объект Context, а не просто DOM-элемент. Объект Context содержит свойства и методы, позволяющие управлять поведением всех waypoint, связанных с этим контекстом:
element — DOM-элемент, являющийся контейнером
скролла.waypoints — коллекция всех waypoint, привязанных к
данному контексту.refresh() — метод для обновления всех waypoint внутри
контекста, особенно полезен после изменения DOM.destroy() — удаляет все waypoint, связанные с
контекстом.refresh()Контекст автоматически отслеживает размеры и положение элементов при
скролле, но если изменяется контент страницы или размеры контейнера,
необходимо вызвать refresh():
wpContext.refresh();
Это гарантирует, что все waypoint пересчитают свои позиции относительно обновлённого контекста.
destroy()Для удаления всех waypoint, связанных с конкретным контекстом:
wpContext.destroy();
После вызова destroy() waypoint перестают реагировать на
скролл внутри этого контекста. Это особенно полезно при динамическом
создании и удалении контейнеров с прокруткой.
Waypoints позволяет создавать собственные контексты для нестандартных контейнеров скролла. Например:
var customContext = new Waypoint.Context(document.getElementById('customContainer'));
Теперь можно создавать waypoint с привязкой к
customContext:
var waypoint = new Waypoint({
element: document.getElementById('targetElement'),
handler: function(direction) {
console.log(direction);
},
context: customContext
});
Созданный таким образом контекст полностью управляет всеми waypoint
внутри него, включая методы refresh() и
destroy().
refresh().// Создание кастомного контекста для контейнера
var scrollBox = document.getElementById('scrollBox');
var customContext = new Waypoint.Context(scrollBox);
// Создание waypoint внутри кастомного контекста
var wp1 = new Waypoint({
element: document.getElementById('section1'),
handler: function(direction) {
console.log('Section1', direction);
},
context: customContext
});
// Обновление всех waypoint при изменении содержимого контейнера
scrollBox.addEventListener('resize', function() {
customContext.refresh();
});
В этом примере waypoint реагирует на прокрутку внутри
scrollBox, и при изменении его размеров все позиции
пересчитываются автоматически.
contextcontext, если waypoint находится
внутри скроллируемого блока, отличного от window.refresh() после динамических изменений
DOM.Метод context является центральным инструментом для
контроля поведения waypoint в сложных макетах с несколькими
скроллируемыми контейнерами, обеспечивая гибкость и точность
срабатывания событий.