В библиотеке Stickybits событие unstuck
играет ключевую роль для управления состоянием «прилипания» элементов
при прокрутке страницы. Оно срабатывает в тот момент, когда элемент
перестаёт быть «липким» и возвращается в своё обычное положение на
странице. Это событие особенно полезно для отслеживания перехода
элементов из состояния фиксированного позиционирования обратно в поток
документа.
Перед использованием события необходимо подключить библиотеку и инициализировать Stickybits для выбранного элемента:
import stickybits from 'stickybits';
const sticky = stickybits('.header', {
useStickyClasses: true
});
Опция useStickyClasses добавляет CSS-классы
is-sticky, is-stuck и is-unstuck
для управления состояниями элемента.
unstuckЭлемент в Stickybits может находиться в трёх состояниях:
Событие unstuck срабатывает после перехода из состояния
stuck обратно в default. При этом выполняются
все подписанные обработчики события, что позволяет запускать
пользовательский код в момент прекращения фиксации.
unstuckStickybits позволяет подписываться на события через метод
addEventListener. Для события unstuck это
выглядит следующим образом:
sticky.addEventListener('stickybit:unstuck', function(e) {
console.log('Элемент перестал быть липким', e.target);
});
В объекте события e.target содержится ссылка на
DOM-элемент, который покинул состояние stuck. Это позволяет
динамически изменять его стиль или выполнять другие действия, например,
скрывать подсказки или отменять анимации, применённые к «липкому»
элементу.
Stickybits автоматически управляет CSS-классами, связанными с состояниями:
is-sticky – элемент активен в состоянии
прилипания.is-stuck – элемент полностью «прилип» к позиции.is-unstuck – элемент покинул состояние
«прилипания».Использование CSS-класса is-unstuck облегчает создание
плавных переходов и анимаций при уходе элемента из состояния sticky:
.header.is-unstuck {
transition: all 0.3s ease;
opacity: 0.7;
}
Событие unstuck часто используется совместно с событиями
sticky и stuck. Такой подход позволяет
полностью контролировать жизненный цикл «липкого» элемента:
sticky.addEventListener('stickybit:stuck', function(e) {
console.log('Элемент стал липким');
});
sticky.addEventListener('stickybit:unstuck', function(e) {
console.log('Элемент перестал быть липким');
});
Этот метод обеспечивает возможность синхронизации анимаций, логики отображения контента и динамических интерфейсов с состоянием элемента на странице.
Событие unstuck особенно важно для сложных макетов с
множеством фиксированных панелей, навигационных элементов или рекламных
баннеров. Оно позволяет:
display: none), событие unstuck не
будет корректно срабатывать до его появления.unstuck корректно срабатывает только если элемент полностью
выходит за границы родителя. Если родитель использует
overflow: hidden, событие может вести себя
непредсказуемо.unstuck с
CSS-анимациями на классе is-unstuck.e.target для точечного воздействия на
конкретный элемент, особенно если Stickybits применяется к группе
элементов.Событие unstuck в Stickybits является мощным
инструментом для управления переходом элементов из состояния фиксации
обратно в поток документа, обеспечивая гибкость и контроль над
визуальными эффектами и поведением интерфейса.