В библиотеке Headroom.js событие onPin
является одним из ключевых инструментов для управления поведением
элементов при прокрутке страницы. Оно срабатывает в момент, когда
элемент прикрепляется обратно к верхней части экрана
после того, как ранее был скрыт при прокрутке вниз.
onPinСобытие onPin позволяет реализовать действия, которые
должны происходить только при появлении шапки или другого
фиксированного блока. Например:
Headroom.js подключается к элементу следующим образом:
var header = document.querySelector("header");
var headroom = new Headroom(header, {
tolerance: 5,
offset: 50,
classes: {
pinned: "headroom--pinned",
unpinned: "headroom--unpinned",
top: "headroom--top",
notTop: "headroom--not-top",
initial: "headroom"
},
onPin: function() {
console.log("Элемент снова видим");
}
});
headroom.init();
header – элемент DOM, к которому
применяется Headroom.js.tolerance – число пикселей, на которое
можно прокрутить, прежде чем триггер сработает.offset – смещение от верхнего края
страницы, после которого поведение активируется.classes – объект с классами для
различных состояний (pinned, unpinned,
top, notTop, initial).onPin – функция, вызываемая при
закреплении элемента.onPin: function() {
header.classList.add("fade-in");
setTimeout(() => {
header.classList.remove("fade-in");
}, 500);
}
Этот код добавляет класс анимации fade-in на 500 мс,
когда шапка снова появляется на экране.
onPin: function() {
document.querySelector(".menu-button").style.display = "block";
}
После закрепления шапки кнопка меню становится видимой.
onPin: function() {
var sidebar = document.querySelector(".sidebar");
sidebar.classList.add("active");
}
Когда верхний элемент фиксируется, соседний сайдбар получает активный класс для отображения или анимации.
Headroom.js поддерживает несколько событий одновременно:
onUnpin – вызывается при скрытии
элемента;onTop – вызывается при достижении
верхней границы страницы;onNotTop – вызывается при уходе с
верхней границы;onUnfix и
onFix – для управления фиксированным
состоянием.Событие onPin часто используется в паре с
onUnpin для создания плавных интерфейсных
эффектов, когда элемент динамически исчезает и появляется в зависимости
от направления прокрутки.
onPin, чтобы не блокировать основной поток браузера.tolerance и offset для тонкой
настройки чувствительности реакции на прокрутку.var header = document.querySelector("header");
var headroom = new Headroom(header, {
offset: 100,
tolerance: 10,
classes: {
pinned: "headroom--pinned",
unpinned: "headroom--unpinned"
},
onPin: function() {
header.classList.add("visible");
document.querySelector(".cta-button").classList.add("highlight");
},
onUnpin: function() {
header.classList.remove("visible");
document.querySelector(".cta-button").classList.remove("highlight");
}
});
headroom.init();
В этом примере шапка и кнопка с призывом к действию реагируют синхронно: при закреплении шапка становится видимой и кнопка подсвечивается, при скрытии — исчезают соответствующие классы.
Событие onPin является универсальным инструментом для
создания интерактивного, динамичного интерфейса с адаптивным поведением
шапок и других фиксированных элементов. Его правильное использование
позволяет реализовать плавные и отзывчивые UI-эффекты без лишнего кода и
с высокой производительностью.