Headroom.js позволяет динамически управлять видимостью шапки сайта при прокрутке страницы. Для корректной работы библиотеки важно заранее определить базовые CSS-стили для шапки, чтобы изменения поведения были плавными и предсказуемыми.
Простейшая структура шапки для Headroom.js выглядит так:
<header class="header">
<nav class="nav">
<ul class="nav__list">
<li class="nav__item"><a href="#">Главная</a></li>
<li class="nav__item"><a href="#">О нас</a></li>
<li class="nav__item"><a href="#">Контакты</a></li>
</ul>
</nav>
</header>
Класс .header будет использоваться для привязки
Headroom.js и применения базовых стилей.
Для корректной анимации шапки при прокрутке необходимо определить фиксированное положение, ширину и переходы:
.header {
position: fixed; /* Фиксируем шапку вверху страницы */
top: 0;
left: 0;
width: 100%; /* Ширина на всю страницу */
background-color: #ffffff; /* Цвет фона шапки */
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Легкая тень для визуального отделения */
z-index: 1000; /* Поверх всего контента */
transition: transform 0.3s ease-in-out; /* Плавное появление/скрытие */
}
Ключевые моменты:
position: fixed позволяет шапке оставаться видимой при
прокрутке.z-index предотвращает перекрытие контентом.transition обеспечивает плавный эффект скрытия и
появления.Headroom.js использует три основных класса для управления состоянием шапки:
headroom--unpinned — шапка скрыта при прокрутке
вниз.headroom--pinned — шапка показана при прокрутке
вверх.headroom--top — шапка в верхней точке страницы.headroom--not-top — шапка уже прокручена вниз..headroom--unpinned {
transform: translateY(-100%); /* Скрываем шапку вверх */
}
.headroom--pinned {
transform: translateY(0); /* Показываем шапку */
}
.headroom--top {
box-shadow: none; /* Убираем тень у верхнего края */
}
.headroom--not-top {
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1); /* Добавляем тень при прокрутке */
}
Особенности:
transform: translateY(-100%) позволяет скрывать шапку
без смещения других элементов страницы.transition из базового стиля обеспечивает плавную
анимацию при смене состояний.Для визуальной консистентности шапки важно определить фиксированную высоту и паддинги:
.header {
height: 60px; /* Высота шапки */
line-height: 60px; /* Вертикальное центрирование текста */
padding: 0 20px; /* Отступы слева и справа */
display: flex;
align-items: center;
justify-content: space-between; /* Пространство между элементами */
}
Советы по верстке навигации:
flexbox.cursor: pointer и transition для
hover-эффектов.Для мобильных устройств необходимо учитывать уменьшенные размеры шапки:
@media (max-width: 768px) {
.header {
height: 50px;
line-height: 50px;
padding: 0 15px;
}
.nav__list {
display: flex;
flex-direction: column; /* Вертикальный список для мобильных */
}
}
Ключевой момент: базовые стили должны быть простыми, чтобы не конфликтовать с динамическими классами Headroom.js.
Для улучшения UX часто добавляют псевдоэффекты прозрачности и тени:
.header {
transition: transform 0.3s ease-in-out, box-shadow 0.3s ease-in-out, background-color 0.3s ease-in-out;
}
.headroom--unpinned {
opacity: 0.9; /* Легкая прозрачность при скрытии */
}
.headroom--pinned {
opacity: 1; /* Полная видимость */
}
Эти базовые стили создают фундамент для работы Headroom.js, обеспечивая правильное поведение шапки на всех устройствах и плавные анимации при прокрутке страницы.