Метод freeze является одной из ключевых возможностей
библиотеки Headroom.js, предназначенной для управления
поведением элементов интерфейса при прокрутке страницы. Он используется
для временной блокировки динамических изменений состояния шапки сайта
(header) без её удаления или разрушения логики, заложенной в
Headroom.
freeze позволяет зафиксировать текущее состояние шапки,
предотвращая её автоматическое скрытие или показ при скролле. Это
особенно полезно в ситуациях, когда требуется:
headroom.freeze();
Где headroom — это экземпляр объекта
Headroom, созданного с помощью конструктора:
var myHeader = document.querySelector('header');
var headroom = new Headroom(myHeader, {
tolerance: 5,
offset: 50,
classes: {
initial: "headroom",
pinned: "headroom--pinned",
unpinned: "headroom--unpinned",
top: "headroom--top",
notTop: "headroom--not-top",
frozen: "headroom--frozen"
}
});
headroom.init();
Метод freeze не принимает аргументов и немедленно
блокирует обработку скролла. С точки зрения логики Headroom, это
эквивалент временной деактивации всех внутренних слушателей событий
прокрутки.
При вызове freeze Headroom добавляет специальный
CSS-класс, который можно использовать для изменения стиля шапки при её
заморозке:
.headroom--frozen {
background-color: rgba(0, 0, 0, 0.8);
transition: none;
}
headroom--frozen добавляется автоматически при вызове
freeze.unfreeze.Таким образом, визуально можно отличить замороженное состояние шапки
от обычного поведения pinned/unpinned.
Для восстановления динамического поведения используется метод
unfreeze:
headroom.unfreeze();
Особенности работы unfreeze:
headroom--frozen.unpinned до заморозки, она
вернется к нему автоматически.Комбинация freeze/unfreeze позволяет гибко
контролировать поведение шапки на различных этапах взаимодействия с
пользователем.
1. Заморозка при открытии меню:
var menuButton = document.querySelector('.menu-btn');
menuButton.addEventListener('click', function() {
headroom.freeze(); // блокируем движение шапки
document.querySelector('.menu').classList.toggle('open');
});
2. Разморозка после закрытия модального окна:
var modalClose = document.querySelector('.modal-close');
modalClose.addEventListener('click', function() {
headroom.unfreeze(); // возобновляем динамику шапки
});
3. Интеграция с событиями страницы:
window.addEventListener('scroll', function() {
if (window.scrollY > 500) {
headroom.freeze(); // фиксируем шапку после прокрутки 500px
} else {
headroom.unfreeze();
}
});
freeze только для временной блокировки;
длительное замораживание может нарушить UX, если шапка перестанет
реагировать на скролл.pin,
unpin) учитывать приоритет freeze: заморозка
перекрывает все автоматические изменения состояния.tolerance позволяет создавать
плавные и предсказуемые эффекты при взаимодействии пользователя с
сайтом.Метод freeze обеспечивает высокий уровень контроля над
шапкой, позволяя интегрировать Headroom.js в сложные интерфейсы без
нарушения логики анимации и отзывчивости элементов.