Stickybits — это небольшая, но мощная библиотека для реализации «липкого» поведения элементов на веб-странице. По умолчанию она добавляет встроенные стили для управления положением элементов при прокрутке, однако в ряде случаев встроенные стили могут конфликтовать с существующим дизайном. Для решения таких задач предусмотрена возможность полностью отключить встроенное оформление.
useStickyClassesОсновной способ отключить встроенные стили — использовать параметр
useStickyClasses. Этот флаг управляет тем, применяет ли
Stickybits свои CSS-свойства (position: fixed,
top, left и т.д.) к элементу.
Пример использования:
var sticky = stickybits('.my-element', {
useStickyClasses: true, // включение классов без встроенных стилей
stickyBitStickyOffset: 0
});
true — Stickybits не добавляет
inline-стили, но продолжает управлять классами:
.js-is-sticky — элемент находится в липком
состоянии..js-is-stuck — элемент достиг нижней границы
контейнера.false — библиотека работает
полностью по умолчанию, включая inline-стили для
позиционирования.
Использование useStickyClasses: true позволяет полностью
контролировать стили через CSS, не полагаясь на встроенные правила.
stickyBitStickyOffsetПараметр stickyBitStickyOffset задает смещение для
липкого элемента. При отключении встроенных стилей он используется
только для вычислений позиции, не влияя на CSS напрямую.
Пример:
stickybits('.my-element', {
useStickyClasses: true,
stickyBitStickyOffset: 10
});
В этом случае библиотека будет корректно отслеживать смещение
элемента на 10px от верхней границы окна при добавлении класса
.js-is-sticky, но inline-стили не применяются.
После отключения встроенных стилей позицию элемента можно полностью контролировать через собственные правила CSS:
.my-element.js-is-sticky {
position: fixed;
top: 0;
width: 100%;
z-index: 100;
}
.my-element.js-is-stuck {
position: absolute;
bottom: 0;
}
Это позволяет интегрировать Stickybits в любую верстку без конфликтов с существующими стилями или CSS-фреймворками.
stickybits с динамическими элементамиПри работе с элементами, добавляемыми динамически в DOM, важно помнить:
useStickyClasses: true совместно с
методами update() и cleanup() для корректного
пересчета позиции.Пример динамического обновления:
var sticky = stickybits('.my-element', { useStickyClasses: true });
document.querySelector('#add-element').addEventListener('click', function() {
sticky.update(); // пересчет позиций после добавления нового контента
});
Если на странице несколько липких элементов, для каждого можно применить общий подход:
stickybits('.sticky-element', {
useStickyClasses: true
});
Все элементы получат только классы .js-is-sticky и
.js-is-stuck, а стили задаются централизованно через CSS.
Это особенно удобно при работе с компонентными библиотеками или
CSS-модулями, где inline-стили нежелательны.
Отключение встроенных стилей дает возможность использовать плавные переходы при изменении состояния:
.my-element {
transition: top 0.3s ease, transform 0.3s ease;
}
.my-element.js-is-sticky {
transform: translateY(0);
}
Inline-стили от Stickybits не мешают анимации, поскольку управление положением производится через CSS-классы.
useStickyClasses: true, если
требуется полный контроль через CSS.update().Этот подход делает Stickybits гибким инструментом для любых проектов, где важна строгая кастомизация внешнего вида и поведения «липких» элементов.