Stickybits — это легковесная библиотека JavaScript, предназначенная для управления «липкими» элементами на веб-странице. Основная цель библиотеки — упрощение процесса фиксации элементов при прокрутке страницы без необходимости вручную писать сложные CSS-трюки или отслеживание событий скролла.
Библиотека предоставляет несколько ключевых функций, которые управляют поведением элементов, а также позволяют гибко настраивать их с помощью конфигурации. Понимание сигнатур этих функций критично для правильного использования Stickybits.
stickybits(target, options)
Аргументы:
target — элемент или селектор CSS, к которому
применяется поведение sticky. Может быть строкой (например,
'.header') или DOM-элементом.
options — объект конфигурации, который может
содержать следующие свойства:
useStickyClasses (boolean, по умолчанию
true) — добавляет CSS-классы .js-is-sticky,
.js-is-stuck для отслеживания состояния элемента.stickyBitStickyOffset (number, по умолчанию
0) — смещение от верхней границы при фиксации.parentClass (string, по умолчанию
'js-stickybit-parent') — класс родительского
контейнера.customStickyChangeNumber (number, по умолчанию
0) — точка скролла, после которой элемент становится
sticky.verticalPosition (string, по умолчанию
'top') — позиция фиксации: 'top' или
'bottom'.noStyles (boolean, по умолчанию false) —
отключает встроенные стили библиотеки.Возвращаемое значение:
update()stickybitsInstance.update()
cleanup()stickybitsInstance.cleanup()
Убирает все изменения, внесённые библиотекой:
.js-is-sticky,
.js-is-stuck;addInstance(target)stickybitsInstance.addInstance(target)
target — DOM-элемент или селектор.removeInstance(target)stickybitsInstance.removeInstance(target)
Stickybits поддерживает кастомные классы состояния, что позволяет
следить за событиями скролла через CSS. При включённой опции
useStickyClasses библиотека автоматически меняет
классы:
.js-is-sticky — элемент в состоянии «липкий»..js-is-stuck — элемент достиг нижней границы
родителя..js-is-unstuck — элемент вернулся в исходное
положение.Сигнатуры этих классов можно использовать в собственных JavaScript-функциях:
document.querySelector('.header').addEventListener('stickybit:statechange', (event) => {
console.log(event.detail);
});
event.detail возвращает объект состояния
элемента:
isSticky — boolean, true если элемент липкий;isStuck — boolean, true если элемент достиг нижней
границы;parent — DOM-элемент родителя;el — DOM-элемент sticky.Stickybits позволяет изменять позицию фиксации через параметр
verticalPosition:
stickybits('.sidebar', { verticalPosition: 'bottom' });
'top' — стандартное поведение: элемент фиксируется к
верхней границе окна.'bottom' — элемент фиксируется к нижней границе, что
полезно для футеров и нижних панелей.// Инициализация
const sticky = stickybits('.header', {
useStickyClasses: true,
stickyBitStickyOffset: 10,
verticalPosition: 'top'
});
// Добавление нового элемента после инициализации
sticky.addInstance('.sidebar');
// Пересчёт после изменения DOM
sticky.update();
// Удаление всех изменений
sticky.cleanup();
update().cleanup() восстанавливает исходное состояние
элементов..js-is-sticky и .js-is-stuck
позволяют интегрировать анимации и CSS-переходы без изменения логики
JavaScript.Stickybits реализует лёгкую абстракцию над нативной CSS-свойством
position: sticky, добавляя возможности контроля через
JavaScript. Понимание сигнатур всех функций библиотеки позволяет строить
сложные интерфейсы с динамическими sticky-элементами, не нарушая
производительность страницы.