Библиотека Headroom.js предназначена для управления
поведением элементов интерфейса при прокрутке страницы, чаще всего —
верхних панелей навигации. Один из ключевых аспектов её работы —
динамическое присвоение CSS-классов элементу в зависимости от состояния
прокрутки. Класс headroom--not-bottom
играет важную роль в этом процессе.
Класс headroom--not-bottom применяется к элементу, когда
головная панель находится не у нижнего края страницы.
Иными словами, элемент ещё не достиг нижней границы контейнера или
документа. Этот класс является контрастом к
headroom--bottom, который добавляется, когда
элемент достигает нижней границы.
Присвоение headroom--not-bottom позволяет:
Headroom.js динамически изменяет классы на элементе на основе состояния прокрутки. В момент инициализации библиотека сохраняет следующие состояния:
При каждом событии прокрутки (scroll) библиотека
проверяет координаты элемента и документа, и в зависимости от этого
добавляет или удаляет соответствующие классы. Класс
headroom--not-bottom добавляется автоматически, если
элемент не пересёк нижнюю границу документа или родительского
контейнера.
// Инициализация Headroom.js
var header = document.querySelector("header");
var headroom = new Headroom(header, {
offset: 100,
tolerance: 5,
classes: {
initial: "headroom",
pinned: "headroom--pinned",
unpinned: "headroom--unpinned",
top: "headroom--top",
notTop: "headroom--not-top",
bottom: "headroom--bottom",
notBottom: "headroom--not-bottom"
}
});
headroom.init();
В этом примере класс headroom--not-bottom будет
автоматически присваиваться, когда элемент находится выше нижней
границы, что позволяет отдельно стилизовать панель.
.headroom--not-bottom {
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
transition: box-shadow 0.3s ease;
}
.headroom--bottom {
box-shadow: none;
}
headroom--not-bottom позволяет динамически изменять позицию
панели в зависимости от того, достигнут низ страницы или нет:.headroom--not-bottom {
position: fixed;
top: 0;
width: 100%;
}
.headroom--bottom {
position: absolute;
bottom: 0;
}
headroom--not-bottom используется вместе с
headroom--pinned и headroom--unpinned для
точного управления поведением панели:.headroom--pinned.headroom--not-bottom {
transform: translateY(0);
}
.headroom--unpinned.headroom--not-bottom {
transform: translateY(-100%);
}
Таким образом, библиотека позволяет создавать интерактивные, скрывающиеся и фиксированные панели, сохраняя при этом визуальную консистентность на протяжении всей прокрутки.
Совместимость с динамическим контентом Если
высота контента на странице изменяется после загрузки (например,
подгружается контент через AJAX), проверка нижней границы должна
оставаться актуальной. Headroom.js обновляет класс
headroom--not-bottom на каждом событии scroll, что делает
его надёжным для динамических страниц.
Порядок классов CSS-селекторы должны учитывать,
что класс headroom--not-bottom может присутствовать
одновременно с headroom--pinned или
headroom--unpinned. Неверный порядок приоритетов может
привести к конфликтам стилей.
Производительность Проверка нижней границы при
скролле может быть ресурсоёмкой на страницах с большим количеством
элементов. Для оптимизации рекомендуется использовать
tolerance и offset, чтобы уменьшить количество
срабатываний и пересчётов.
Класс headroom--not-bottom — ключевой инструмент для
управления поведением элементов на страницах с прокруткой. Его основная
задача — фиксировать состояние элемента до того момента, пока он
не достигнет нижней границы, что позволяет гибко управлять
визуальными эффектами, анимациями и позиционированием. Правильное
использование этого класса вместе с другими классами Headroom.js
обеспечивает интуитивное и плавное взаимодействие интерфейса с
пользователем.