Библиотека Waypoints в JavaScript предоставляет
гибкий механизм для отслеживания положения элементов на странице
относительно прокрутки. Один из ключевых инструментов для управления
триггерами — это свойство offset. В отличие от
фиксированных числовых значений, offset может быть задан
как функция, что позволяет динамически определять момент срабатывания
waypoint в зависимости от состояния страницы, размеров элементов или
других условий.
offsetСвойство offset принимает следующие значения:
offset: number | string | function
'50%'.Пример функции:
var waypoint = new Waypoint({
element: document.getElementById('section1'),
handler: function(direction) {
console.log('Waypoint достигнут в направлении:', direction);
},
offset: function() {
return this.element.clientHeight / 2;
}
});
Здесь функция offset возвращает половину высоты
элемента, то есть waypoint сработает, когда середина элемента окажется
на верхней границе окна просмотра.
offsetФункция, переданная в offset, вызывается с контекстом
waypoint, что позволяет использовать свойства
this.element и this.adapter. Основные
возможности:
Доступ к DOM-элементу this.element
предоставляет прямой доступ к элементу, на который установлен waypoint.
Пример:
offset: function() {
return this.element.offsetTop + 100;
}Использование адаптера Waypoints
this.adapter содержит методы для работы с размерами и
позициями элемента в унифицированной форме:
offset: function() {
return this.adapter.outerHeight() / 3;
}Динамическое смещение на основе состояния страницы С помощью функции можно учитывать текущую высоту окна, положение других элементов, активные классы и другие параметры:
offset: function() {
var headerHeight = document.querySelector('header').offsetHeight;
return headerHeight + 20;
}var waypoint = new Waypoint({
element: document.getElementById('dynamic-section'),
handler: function(direction) {
console.log('Waypoint сработал!');
},
offset: function() {
return window.innerHeight * 0.75;
}
});
Waypoint срабатывает, когда верх элемента достигает 75% высоты окна. При изменении размеров окна смещение пересчитывается автоматически при следующем скролле.
var waypoint = new Waypoint({
element: document.getElementById('content'),
handler: function(direction) {
console.log('Секция content видна!');
},
offset: function() {
var prevSection = document.getElementById('header');
return prevSection.offsetHeight;
}
});
Это позволяет создать эффект, при котором waypoint срабатывает только после того, как предыдущая секция полностью прокрутилась из области видимости.
Функция вызывается при каждом скролле Waypoints
пересчитывает значение offset при каждом срабатывании, что
делает возможным динамическое реагирование на изменения DOM или размеров
окна.
Возвращаемое значение должно быть числом Результат функции обязательно интерпретируется как смещение в пикселях. Любые другие типы данных приведут к ошибке или некорректной работе waypoint.
Сочетание с процентными и фиксированными значениями Можно комбинировать динамическую функцию и фиксированные величины:
offset: function() {
return window.innerHeight * 0.3 + 50;
}offset-функцию для анимаций при
скролле, чтобы запуск происходил в зависимости от размеров
элементов.console.log()
для точной настройки триггеров.Функции в offset делают Waypoints чрезвычайно гибким
инструментом для построения интерактивных эффектов, плавных анимаций и
динамических реакций на прокрутку. Правильное использование контекста
this и адаптера позволяет строить точные и адаптивные
триггерные зоны на странице.