Библиотека Headroom.js предоставляет мощный инструмент для управления поведением фиксированных элементов при скролле страницы. Ключевым аспектом её работы является система событий и коллбэков, которые позволяют отслеживать изменения состояния элемента и реагировать на них.
Headroom.js использует четыре основных события, каждое из которых соответствует определённому поведению шапки при скролле:
pin Срабатывает, когда шапка
фиксируется и остаётся видимой на экране после скролла вверх.
Пример использования:
var header = document.querySelector("#header");
var headroom = new Headroom(header);
headroom.init();
header.addEventListener("headroom:pin", function() {
console.log("Шапка зафиксирована и видима");
});unpin Срабатывает, когда шапка
скрывается при скролле вниз. Это позволяет динамически изменять внешний
вид страницы, освобождая место для контента.
Пример:
header.addEventListener("headroom:unpin", function() {
console.log("Шапка скрыта");
});top Вызывается, когда пользователь
прокрутил страницу полностью вверх. Это событие полезно для
восстановления исходного состояния шапки.
header.addEventListener("headroom:top", function() {
console.log("Страница на самом верху");
});notTop Активируется, когда
пользователь начинает скроллить страницу вниз от верхней позиции. Может
использоваться для включения дополнительных стилей или эффектов при
уходе от верхней позиции.
header.addEventListener("headroom:notTop", function() {
console.log("Страница прокручена вниз от верха");
});Headroom.js позволяет задавать коллбэки не только через события DOM, но и непосредственно в конфигурации при создании экземпляра:
var headroom = new Headroom(header, {
tolerance: 5,
offset: 100,
onPin: function() {
console.log("Коллбэк onPin вызван");
},
onUnpin: function() {
console.log("Коллбэк onUnpin вызван");
},
onTop: function() {
console.log("Коллбэк onTop вызван");
},
onNotTop: function() {
console.log("Коллбэк onNotTop вызван");
}
});
headroom.init();
Особенности работы коллбэков:
onPin и onUnpin вызываются только при
изменении состояния видимости шапки.onTop и onNotTop срабатывают при
достижении или уходе от верхней позиции страницы.Кроме стандартных коллбэков, Headroom.js предоставляет следующие возможности:
Методы управления состоянием вручную:
headroom.pin(); // зафиксировать шапку
headroom.unpin(); // скрыть шапку
headroom.destroy(); // полностью удалить Headroom с элемента
headroom.isPinned(); // вернуть true, если шапка зафиксирована
headroom.isUnpinned(); // вернуть true, если шапка скрытаСобытия DOM для кастомной интеграции: Можно
создавать свои обработчики на базе событий headroom:pin и
headroom:unpin для синхронизации с другими
скриптами.
Коллбэки принимают контекст элемента this, с которым
работает Headroom.js. Это позволяет управлять DOM напрямую:
var headroom = new Headroom(header, {
onPin: function() {
this.classList.add("pinned");
},
onUnpin: function() {
this.classList.remove("pinned");
this.classList.add("unpinned");
}
});
headroom.init();
В этом примере this ссылается на элемент шапки, поэтому
можно динамически добавлять и удалять CSS-классы без дополнительного
поиска элемента в DOM.
pin/unpin.unpin) или
видна (pin).top и notTop для переключения навигационных
элементов или отображения кнопки «Наверх».| Событие/Коллбэк | Когда срабатывает | Применение |
|---|---|---|
pin / onPin |
Шапка закреплена | Появление шапки, изменение стиля |
unpin / onUnpin |
Шапка скрыта | Скрытие шапки, анимации |
top / onTop |
Страница на вершине | Восстановление исходного состояния |
notTop / onNotTop |
Страница прокручена вниз | Включение альтернативного дизайна |
Эта система событий и коллбэков делает Headroom.js гибким инструментом для создания динамических и отзывчивых интерфейсов. Все события можно комбинировать с CSS-анимациями и сторонними библиотеками для полной кастомизации поведения шапки на странице.