Библиотека Waypoints позволяет создавать реакцию на прокрутку
страницы и управлять поведением элементов, которые должны оставаться
видимыми или фиксированными на экране. Для реализации липких
элементов используется модуль Sticky библиотеки
Waypoints. Настройка поведения таких элементов осуществляется через
набор параметров, которые определяют момент активации, смещение и
взаимодействие с другими элементами страницы.
elementОписание: Обязательный параметр, указывающий HTML-элемент, который будет становиться липким.
Тип: HTMLElement или селектор
string.
Пример использования:
var sticky = new Waypoint.Sticky({
element: document.getElementById('navbar')
});
Особенности:
wrapperОписание: Определяет контейнер, в который оборачивается липкий элемент автоматически. Это необходимо для сохранения исходного потока документа и корректного позиционирования.
Тип: HTMLElement или селектор
string. По умолчанию: Waypoints создаёт
собственный <div>-обёртку.
Пример:
var sticky = new Waypoint.Sticky({
element: document.getElementById('sidebar'),
wrapper: document.getElementById('sidebar-wrapper')
});
Особенности:
wrapper позволяет
интегрировать липкий элемент в существующую структуру страницы.stuckClassОписание: CSS-класс, который добавляется к элементу при его фиксации.
Тип: string По
умолчанию: 'stuck'
Пример:
var sticky = new Waypoint.Sticky({
element: document.querySelector('.header'),
stuckClass: 'is-sticky'
});
Особенности:
offsetОписание: Определяет точку активации липкого элемента относительно верхней границы окна просмотра.
Тип: number (в пикселях) или
function, возвращающая число. По
умолчанию: 0
Примеры:
var sticky = new Waypoint.Sticky({
element: document.getElementById('menu'),
offset: 100 // элемент становится липким, когда верх окна прокрутки достигнет 100px
});
var sticky = new Waypoint.Sticky({
element: document.getElementById('menu'),
offset: function() {
return this.element.clientHeight; // активация после полной высоты элемента
}
});
Особенности:
offset полезен при адаптивной верстке,
когда размеры элементов зависят от ширины экрана.stuckОписание: Колбэк-функция, вызываемая при фиксации элемента.
Тип: function
Пример:
var sticky = new Waypoint.Sticky({
element: document.getElementById('nav'),
stuck: function() {
console.log('Элемент зафиксирован');
}
});
Особенности:
unstuckОписание: Колбэк, вызываемый при возвращении элемента в нормальное положение после того, как он перестал быть липким.
Тип: function
Пример:
var sticky = new Waypoint.Sticky({
element: document.getElementById('nav'),
unstuck: function() {
console.log('Элемент больше не липкий');
}
});
Особенности:
directionОписание: Указывает направление прокрутки, при котором элемент становится липким.
Тип: 'down' | 'up' | 'both' По
умолчанию: 'down'
Пример:
var sticky = new Waypoint.Sticky({
element: document.getElementById('header'),
direction: 'both'
});
Особенности:
'down' — элемент фиксируется при прокрутке вниз.'up' — фиксируется при прокрутке вверх.'both' — фиксируется при обоих направлениях, чаще
используется для меню, которое должно оставаться на экране при движении
страницы в любом направлении.overflow: hidden или
overflow: auto, поведение может быть нарушено.
Рекомендуется использовать overflow: visible.var stickySidebar = new Waypoint.Sticky({
element: document.querySelector('.sidebar'),
wrapper: document.querySelector('.sidebar-wrapper'),
stuckClass: 'sidebar-fixed',
offset: function() {
return window.innerHeight * 0.2; // фиксация при достижении 20% высоты окна
},
stuck: function() {
console.log('Сайдбар зафиксирован');
},
unstuck: function() {
console.log('Сайдбар вернулся на место');
},
direction: 'both'
});
offset позволяет создавать
адаптивные и динамические точки фиксации.stuckClass и колбэков даёт полный контроль
над поведением и визуальным состоянием элемента.Waypoints предоставляет мощный набор параметров для реализации сложных интерфейсов с липкими элементами, позволяя управлять активацией, стилями и событиями в зависимости от прокрутки и размеров окна. Это позволяет создавать интерактивные шапки, боковые панели, меню и другие элементы с гибкой логикой поведения.