Headroom.js — это библиотека для управления поведением
верхней панели при прокрутке страницы. Одной из ключевых возможностей
является событие onTop, которое срабатывает, когда
пользователь прокручивает страницу до верхней границы. Это позволяет
динамически изменять интерфейс в зависимости от положения прокрутки,
делая навигацию более гибкой и интерактивной.
onTop и его
назначениеСобытие onTop вызывается каждый раз, когда верхняя
граница страницы становится видимой после прокрутки вниз или при
возвращении к началу. Основные сценарии использования:
Пример инициализации Headroom.js с обработчиком
onTop:
var header = document.querySelector(".header");
var headroom = new Headroom(header, {
tolerance: 5,
offset: 100,
classes: {
initial: "headroom",
pinned: "headroom--pinned",
unpinned: "headroom--unpinned",
top: "headroom--top",
notTop: "headroom--not-top"
},
onTop: function() {
console.log("Страница достигла верхней позиции");
header.classList.add("highlight-top");
},
onNotTop: function() {
header.classList.remove("highlight-top");
}
});
headroom.init();
Пояснение к коду:
tolerance определяет допустимое смещение, при котором
событие не срабатывает, чтобы избежать дрожания элементов при мелкой
прокрутке.offset указывает расстояние от верхней границы, после
которого Headroom начинает отслеживать движение.classes позволяют задавать кастомные CSS-классы для
различных состояний элемента: pinned,
unpinned, top, notTop.onTop вызывается, когда элемент достигает верхней
позиции.onNotTop срабатывает при покидании верхней позиции, что
удобно для обратного эффекта.onTop: function() {
header.style.backgroundColor = "#ffffff";
},
onNotTop: function() {
header.style.backgroundColor = "transparent";
}
Такой подход делает интерфейс более динамичным, например, при скролле появляется прозрачная шапка, а при возвращении к верху – полностью видимая с цветом.
var toTopButton = document.querySelector(".to-top");
onTop: function() {
toTopButton.style.display = "none";
},
onNotTop: function() {
toTopButton.style.display = "block";
}
Кнопка становится видимой только тогда, когда пользователь не находится на верхней позиции, минимизируя визуальный шум.
onTop: function() {
header.querySelector(".logo").classList.add("scale-up");
},
onNotTop: function() {
header.querySelector(".logo").classList.remove("scale-up");
}
Использование onTop для запуска анимации логотипа
создает эффект «возвращения к старту», улучшая визуальное восприятие
страницы.
onToptolerance и offset, чтобы событие
срабатывало естественно.onTop легко комбинируется с onPin и
onUnpin, что позволяет создавать сложные сценарии поведения
верхней панели.top и
notTop с соответствующими визуальными эффектами.onTop срабатывал
корректно.headroom--top и headroom--not-top
рекомендуется прописывать transition: all 0.3s ease;.onTop.Headroom.js позволяет одновременно использовать:
onPin — панель закрепляется при прокрутке вверх.onUnpin — панель скрывается при прокрутке вниз.onTop и onNotTop — управляют состоянием
при достижении верхней границы.Пример:
var headroom = new Headroom(header, {
onPin: function() { header.classList.add("pinned"); },
onUnpin: function() { header.classList.remove("pinned"); },
onTop: function() { header.classList.add("top-reached"); },
onNotTop: function() { header.classList.remove("top-reached"); }
});
Такое сочетание позволяет создавать интерфейс, где шапка исчезает при скролле вниз, появляется при скролле вверх, а при достижении верха страницы получает отдельный стиль.
onTop вызывается каждый раз при достижении
верхней границы, поэтому тяжелые вычисления в обработчике могут
замедлить прокрутку.requestAnimationFrame или
дебаунс-функции для сложных анимаций и динамических изменений.onTop.onTop — это мощный инструмент для контроля поведения
верхней панели, позволяющий реализовать динамический интерфейс,
реагирующий на позицию прокрутки и создающий плавное и интуитивное
взаимодействие пользователя с сайтом.