Stickybits — это небольшая библиотека на JavaScript, предназначенная
для управления «липким» поведением элементов на странице. Она работает
поверх CSS-свойства position: sticky и обеспечивает
корректное поведение на старых браузерах, где нативная поддержка
ограничена, а также добавляет дополнительные возможности по управлению
состоянием элементов.
Основная идея Stickybits заключается в том, чтобы элемент мог «прилипать» к верхней или нижней границе контейнера при прокрутке страницы, при этом оставаясь в пределах родительского блока. Библиотека позволяет настроить такие элементы как футеры, панели навигации или любые блоки, требующие фиксированного позиционирования с условием ограничения по контейнеру.
Для работы с Stickybits необходимо подключить библиотеку и вызвать её на целевом элементе. Простейший пример:
// Подключение к элементу футера
const stickyFooter = stickybits('.footer');
В данном примере .footer — CSS-селектор элемента,
который должен стать «липким». Stickybits возвращает объект с методами
для управления состоянием элемента.
Ключевой момент: если на странице несколько элементов с одинаковым классом, библиотека применяет липкость ко всем сразу.
Stickybits позволяет детально настраивать поведение элементов через объект опций:
stickybits('.footer', {
stickyBitStickyClass: 'is-sticky', // класс, добавляемый при прилипания
useStickyClasses: true, // использование CSS-классов для управления состоянием
parentClass: 'sticky-parent', // класс родителя, для ограничения движения
verticalPosition: 'bottom', // позиция прилипания: 'top' или 'bottom'
noStyles: false // отключить автоматическое добавление inline-стилей
});
false, библиотека
только меняет inline-стили.top) или нижней
(bottom). Для футеров обычно используется
bottom.Липкий футер с Stickybits ведет себя следующим образом:
Пример CSS для корректного отображения:
.sticky-parent {
position: relative;
}
.footer {
width: 100%;
height: 60px;
background-color: #333;
color: #fff;
display: flex;
align-items: center;
justify-content: center;
}
Благодаря Stickybits не требуется вручную вычислять позиции при
прокрутке или использовать сложные обработчики scroll.
Если на странице элементы динамически добавляются или изменяется размер контейнера, Stickybits предоставляет методы для обновления состояния:
stickyFooter.update();
Метод update() пересчитывает позиции и размеры элемента
и родителя, что предотвращает сдвиги и ошибки при изменении
контента.
Для удаления липкости используется метод destroy():
stickyFooter.destroy();
Это удаляет все добавленные классы и inline-стили, полностью возвращая элемент в исходное состояние.
Stickybits поддерживает несколько интересных сценариев:
is-sticky позволяет создавать плавные переходы при
прилипаниях.Пример с медиазапросами:
if (window.innerWidth > 768) {
stickyFooter = stickybits('.footer');
}
parentClass для футеров, чтобы
избежать «вылазки» элемента за пределы контейнера.stickyBitStickyClass для контроля
визуального состояния через CSS вместо inline-стилей.transition к свойствам
top или bottom.update().Stickybits делает работу с «липкими» футерами проще и надежнее,
устраняя большинство проблем, связанных с нативным
position: sticky и кроссбраузерной поддержкой.