Stickybits — это небольшая библиотека на JavaScript, предназначенная
для упрощения реализации «липких» элементов на веб-странице. Она
позволяет закреплять элементы при прокрутке, обеспечивая поведение,
схожее с position: sticky, с дополнительной
кросс-браузерной поддержкой и расширенными возможностями
кастомизации.
Для начала работы с библиотекой необходимо подключить её к проекту. Это можно сделать через CDN или пакетный менеджер:
<script src="https://unpkg.com/stickybits@3.7.8/dist/stickybits.min.js"></script>
Или через npm:
npm install stickybits
После подключения библиотеки можно создать «липкий» элемент.
Основной функцией библиотеки является stickybits(). Она
принимает два аргумента:
Простейший пример:
stickybits('.sticky-element');
В этом случае элемент с классом .sticky-element будет
автоматически «прилипать» при прокрутке страницы.
Stickybits предоставляет несколько опций, позволяющих гибко управлять поведением элементов.
stickyBitStickyOffset (по умолчанию
0) — смещение элемента от верхней границы окна браузера,
когда он становится липким. Пример:stickybits('.sticky-element', { stickyBitStickyOffset: 20 });
Элемент начнет фиксироваться, когда его верхняя граница будет на 20 пикселей ниже верхнего края окна.
useStickyClasses (по умолчанию
true) — добавляет CSS-классы is-sticky,
is-stuck для управления состоянием элемента через стили.
Это упрощает визуальные эффекты при смене состояния.stickybits('.sticky-element', { useStickyClasses: true });
useFixed (по умолчанию
true) — указывает, использовать ли
position: fixed вместо нативного
position: sticky. В некоторых браузерах фиксированная
позиция работает стабильнее и обеспечивает более предсказуемое
поведение.
verticalPosition (по умолчанию
'top') — позволяет задавать, к какой стороне экрана элемент
должен «прилипать» ('top' или
'bottom').
stickybits('.sticky-element', { verticalPosition: 'bottom' });
stickyClass,
stuckClass — позволяют изменить
стандартные классы is-sticky и is-stuck на
собственные.Для практического понимания создадим пример с шапкой, которая фиксируется при прокрутке страницы:
<header class="header">
Липкая шапка
</header>
<main>
<p>Длинный контент...</p>
</main>
CSS для начальной визуализации:
.header {
width: 100%;
height: 60px;
background-color: #3498db;
color: #fff;
line-height: 60px;
text-align: center;
}
.is-sticky {
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
Jav * aScript:
stickybits('.header', {
stickyBitStickyOffset: 0,
useStickyClasses: true
});
После инициализации шапка станет «липкой» при прокрутке, а при
фиксации к верху будет добавляться класс .is-sticky,
позволяющий применять дополнительные стили.
Stickybits поддерживает множественные элементы. Можно передать селектор, соответствующий группе элементов:
stickybits('.sticky-item');
Каждый элемент из набора будет обработан индивидуально, с собственными классами состояния и смещениями.
Для элементов с разной высотой и контентом это особенно важно, так как библиотека автоматически рассчитывает границы фиксации и освобождения элемента.
Stickybits предоставляет методы для управления жизненным циклом элементов после инициализации:
update() — пересчитывает позиции и
состояния, полезно при динамическом изменении размеров контента.destroy() — удаляет все эффекты
sticky, возвращая элемент в исходное состояние.Пример:
const stickyInstance = stickybits('.sticky-element');
stickyInstance.update(); // пересчет при изменении DOM
stickyInstance.destroy(); // удаление sticky
position: sticky не поддерживается.Stickybits сочетает в себе простоту и гибкость: минимальный код для базовой фиксации и расширяемость через опции и CSS-классы для сложных интерфейсов.