Stickybits — это лёгкая JavaScript-библиотека, предназначенная для
управления «липкими» элементами на странице. Одной из ключевых
возможностей является автоматическое присвоение CSS-классов в
зависимости от состояния элемента: закреплён, освобождён или достигнут
предел контейнера. Эти классы позволяют реализовать гибкие стили без
ручного контроля через события scroll.
Stickybits автоматически добавляет несколько стандартных классов к элементу и его контейнеру:
stickybits-sticky — присваивается
элементу в момент, когда он закрепляется на странице и остаётся видимым
при прокрутке.stickybits-bottom — появляется, когда
элемент достигает нижней границы своего контейнера и больше не может
оставаться «липким».stickybits-top — элемент вернулся в
исходное положение, до начала действия «липкости».js-is-sticky — универсальный
вспомогательный класс, указывающий, что элемент контролируется
Stickybits.Эти классы можно использовать напрямую в CSS для создания плавных анимаций, изменения цвета, тени, размера или других визуальных эффектов.
При инициализации Stickybits возможно настроить собственные классы для состояний с помощью объекта опций:
stickybits('.my-element', {
stickyClass: 'my-sticky',
stuckClass: 'my-bottom',
useStickyClasses: true
});
stickyClass — задаёт имя класса,
применяемого к закреплённому элементу.stuckClass — имя класса,
присваиваемого элементу при достижении нижней границы контейнера.useStickyClasses — логическое
значение, включающее или отключающее автоматическое добавление
классов.Если useStickyClasses отключён, Stickybits будет
управлять позицией элемента, но CSS-классы применяться не будут. Это
удобно, когда требуется ручная обработка состояний через события.
Stickybits обновляет классы при каждой прокрутке страницы. Алгоритм работает следующим образом:
offsetTop).stickyClass или stuckClass.Такой подход позволяет создавать адаптивные интерфейсы без
дополнительных слушателей событий scroll.
Автоматические CSS-классы можно использовать для анимации изменений состояния. Например, плавное появление тени при закреплении элемента:
.my-sticky {
transition: box-shadow 0.3s ease;
box-shadow: 0 4px 10px rgba(0, 0, 0, 0.2);
}
.my-bottom {
opacity: 0.8;
transform: translateY(2px);
transition: transform 0.2s ease, opacity 0.2s ease;
}
В этом примере при закреплении элемента появляется тень, а при достижении низа контейнера элемент слегка смещается и меняет прозрачность.
Stickybits автоматически применяет классы на всех разрешениях, но их можно комбинировать с медиазапросами для адаптивного поведения:
@media (max-width: 768px) {
.my-sticky {
box-shadow: none;
position: static;
}
}
Таким образом, на мобильных устройствах элементы могут вести себя иначе, но при этом сохраняется логика автоматического присвоения классов.
Хотя Stickybits в первую очередь ориентирован на CSS-классы, можно реагировать на изменения состояния элемента через пользовательские события:
document.querySelector('.my-element').addEventListener('stickybit:stuck', () => {
console.log('Элемент закреплён');
});
document.querySelector('.my-element').addEventListener('stickybit:unstuck', () => {
console.log('Элемент откреплён');
});
Эти события позволяют выполнять дополнительные действия, такие как изменение содержимого, запуск анимации JavaScript или отправка аналитических данных.
useStickyClasses: true, если
планируется использовать CSS для визуальных эффектов.Автоматические CSS-классы Stickybits создают мощный инструмент для стилизации и управления поведением «липких» элементов, позволяя полностью отделить визуальные эффекты от логики JavaScript.