Stickybits — это легковесная JavaScript-библиотека, созданная для
управления элементами с поведением sticky в браузерах. Она
позволяет обойти ограничения кроссбраузерной поддержки нативного CSS
position: sticky и предоставляет удобные методы для
динамического контроля прилипания элементов на странице.
Нативный position: sticky в CSS позволяет элементу
оставаться «прилипшим» к своей родительской области при прокрутке, до
тех пор, пока не достигнут предел этой области. Пример базового
использования:
.sticky-element {
position: sticky;
top: 0;
}
В этом случае элемент будет закреплён сверху контейнера и будет оставаться видимым, пока не закончится контейнер.
Stickybits подключается через npm, yarn или CDN:
npm install stickybits
Или через CDN:
<script src="https://cdn.jsdelivr.net/npm/stickybits@3.0.11/dist/stickybits.min.js"></script>
После подключения библиотеку можно инициализировать на нужных элементах:
stickybits('.sticky-element', {
stickyBitStickyOffset: 10,
useStickyClasses: true
});
Пояснение параметров:
stickyBitStickyOffset — задаёт смещение от верхней
границы окна при прилипании.useStickyClasses — включает автоматическое добавление
CSS-классов is-sticky и is-stuck для
управления стилями при разных состояниях элемента.Stickybits создаёт три основных состояния элемента:
default) — элемент
находится в нормальном потоке документа.is-sticky) — элемент
фиксируется к указанной позиции при прокрутке.is-stuck) — элемент достигает нижней границы
родительского контейнера и перестаёт двигаться вместе со скроллом.Пример кастомного CSS для классов Stickybits:
.is-sticky {
background-color: #f0f0f0;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
.is-stuck {
opacity: 0.8;
}
useFixedStickybits может использовать нативный position: sticky
или fallback на position: fixed, если нужно более точное
управление. Опция useFixed переключает поведение:
stickybits('.sticky-element', { useFixed: true });
При включённой фиксации элемент не зависит от родительского контейнера, что полезно для sticky-меню, которые должны оставаться видимыми при прокрутке всей страницы.
verticalPositionПозволяет контролировать направление прилипания элемента —
top или bottom:
stickybits('.sticky-element', { verticalPosition: 'bottom' });
Это позволяет создавать «липкие» футеры или элементы, закреплённые снизу экрана.
noStylesОтключает автоматическое добавление inline-стилей, чтобы стили полностью контролировались через CSS:
stickybits('.sticky-element', { noStyles: true });
Это особенно полезно для крупных проектов, где важна строгая модульность CSS и управление через классы.
Stickybits предоставляет API для обновления или удаления sticky-эффекта:
const stickyInstance = stickybits('.sticky-element');
// Обновление позиции при изменении контента
stickyInstance.update();
// Удаление sticky-поведения
stickyInstance.cleanup();
Метод update полезен при динамически добавляемом
контенте, чтобы элемент правильно реагировал на новые размеры родителя
или окна. Метод cleanup возвращает элемент в обычное
состояние без прилипаний.
position: stickytop (или bottom) определяет
точку, где элемент начинает прилипать.overflow: hidden или overflow: auto с
недостаточной высотой. Stickybits автоматически обходит эти ограничения,
используя JavaScript-фоллбеки.Stickybits обеспечивает корректное поведение sticky-элементов в
старых браузерах, где нативный position: sticky отсутствует
или реализован частично. Для современных браузеров Stickybits использует
нативное прилипание, снижая нагрузку на DOM и обеспечивая плавную
анимацию.
Stickybits сочетает преимущества нативного
position: sticky с расширенными возможностями Jav * aScript:
управление состояниями, динамическое обновление, fallback на
position: fixed, кастомные смещения и кроссбраузерная
совместимость. Это делает библиотеку универсальным инструментом для
создания «липких» элементов на сложных веб-страницах.