В библиотеке Waypoints параметр offset играет ключевую
роль в определении момента срабатывания точки отсчёта при прокрутке
страницы. Он задаёт расстояние от верхнего края окна
браузера, при котором срабатывает waypoint. Неправильное
использование offset является одной из наиболее частых
причин неожиданных срабатываний и ошибок в анимациях и навигации.
offsetvar waypoint = new Waypoint({
element: document.getElementById('section1'),
handler: function(direction) {
console.log('Waypoint triggered');
},
offset: '50%' // срабатывает когда верх элемента достигнет середины окна
});
offset: 200 // срабатывание произойдет, когда верх элемента окажется на 200px от верха окна
offset: function() {
return this.element.clientHeight / 2;
}
this.element внутри функции — это DOM-элемент
waypoint.offsetoffset влияет на момент срабатывания waypoint,
но результат зависит от направления прокрутки
(down или up).direction в обработчике:handler: function(direction) {
if(direction === 'down') {
console.log('Пролистываем вниз');
} else {
console.log('Пролистываем вверх');
}
}
Waypoint.refreshAll() после изменения
DOM:window.addEventListener('load', function() {
Waypoint.refreshAll();
});
margin, padding,
border и transform могут смещать точку
срабатывания.transform: translateY(50px) визуально
смещен, но Waypoints считает положение относительно исходного потока
документа.offset
или использовать функцию для динамического вычисления.offset иногда используются для
преждевременного срабатывания waypoint, но слишком большое
отрицательное значение может привести к тому, что waypoint
сработает сразу после загрузки страницы.offset находится в диапазоне
от -elementHeight до viewportHeight.window. Если
элемент находится внутри скроллируемого блока, offset будет
рассчитываться некорректно.var waypoint = new Waypoint({
element: document.getElementById('inner'),
handler: function() { console.log('Triggered'); },
offset: '25%',
context: document.getElementById('scroll-container')
});
offsetWaypoint.refreshAll().var waypoints = document.querySelectorAll('.section');
waypoints.forEach(function(el) {
new Waypoint({
element: el,
handler: function(direction) {
if(direction === 'down') {
el.classList.add('active');
} else {
el.classList.remove('active');
}
},
offset: function() {
return el.offsetHeight * 0.75; // динамическая точка срабатывания
}
});
});
Использование offset требует внимательности:
неправильное понимание его работы приводит к несвоевременным
срабатываниям, дёрганию анимаций и неверной навигации.
Комбинация пикселей, процентов и динамических функций позволяет точно
контролировать момент активации waypoint даже в сложных интерфейсах.