Класс headroom--pinned используется библиотекой
Headroom.js для управления состоянием закрепления
элемента при прокрутке страницы. Этот класс автоматически добавляется к
элементу, когда библиотека фиксирует его положение в верхней части окна
после того, как пользователь прокрутил страницу вверх. Он является
ключевым для реализации динамического скрытия и показа навигационных
панелей или других фиксированных блоков.
Headroom.js отслеживает направление прокрутки и состояние элемента:
Изначальное состояние: Элемент может находиться
в стандартном положении без дополнительных классов или с классом
headroom--unfixed.
Скролл вниз: Когда пользователь прокручивает
страницу вниз, библиотека добавляет класс
headroom--unpinned, скрывая элемент, чтобы освободить
пространство на экране.
Скролл вверх: При прокрутке вверх элемент
возвращается в видимую область. В этот момент
Headroom.js добавляет класс
headroom--pinned, что фиксирует элемент и предотвращает его
дальнейшее смещение.
Фиксированное положение: Класс
headroom--pinned гарантирует, что элемент остаётся на
верхней границе окна браузера и не скользит, пока пользователь
продолжает прокрутку вверх.
Класс headroom--pinned часто используется для управления
визуальными эффектами:
.headroom--pinned {
position: fixed;
top: 0;
left: 0;
right: 0;
transform: translateY(0);
transition: transform 0.2s ease-in-out;
z-index: 1000;
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}
Создание и конфигурация Headroom.js с использованием
headroom--pinned выглядит следующим образом:
const header = document.querySelector('header');
const headroom = new Headroom(header, {
offset: 100, // пиксели до активации
tolerance: {
up: 5, // минимальная прокрутка вверх для закрепления
down: 10 // минимальная прокрутка вниз для скрытия
},
classes: {
pinned: 'headroom--pinned',
unpinned: 'headroom--unpinned',
top: 'headroom--top',
notTop: 'headroom--not-top'
}
});
headroom.init();
Пояснения к параметрам:
pinned/unpinned.headroom--pinned с плавными CSS-переходами
для естественного эффекта появления и исчезновения.z-index для предотвращения перекрытия
фиксированного элемента другими блоками..headroom--unpinned {
transform: translateY(-100%);
transition: transform 0.2s ease-in-out;
}
.headroom--pinned {
transform: translateY(0);
}
.headroom--pinned {
box-shadow: 0 4px 8px rgba(0,0,0,0.2);
background-color: #fff;
}
.headroom--pinned {
animation: slideDown 0.3s ease forwards;
}
@keyframes slideDown {
from { transform: translateY(-100%); }
to { transform: translateY(0); }
}
Класс headroom--pinned является центральным элементом
для реализации динамичных заголовков, навигаций и других фиксированных
блоков. Он обеспечивает плавное закрепление элемента при прокрутке
вверх, создавая комфортный пользовательский интерфейс и улучшая
визуальную и функциональную структуру страницы.