Об этом проекте
canvas-watch — это независимая от фреймворков библиотека, предназначенная для обнаружения 2D-перекрытия между плавающими элементами (например, прилипающими навигационными панелями или закрепленными плеерами) и фоновыми триггерными зонами. В отличие от IntersectionObserver, который сравнивает элементы только с их прокручиваемым предком или областью просмотра, canvas-watch сравнивает ограничивающие прямоугольники, чтобы определить, над какой фоновой зоной в данный момент находится плавающий элемент.
Ключевые возможности:
- Автоматическое переключение классов: Элементы, помеченные как "наблюдаемые", получают класс `over-*` на основе зоны триггера, с которой они перекрываются больше всего (порог по умолчанию — 50%).
- Поддержка вложенности: Вложенные зоны триггера имеют приоритет над своими контейнерами, что позволяет применять более специфичное стилизование в сложных макетах.
- Отслеживание области просмотра: Возможность реактивно отслеживать, находится ли ссылочный элемент выше, внутри, ниже или вне области просмотра.
- Оптимизация производительности: Использует один цикл requestAnimationFrame и IntersectionObserver в качестве ворот видимости, чтобы математика перекрытия выполнялась только для элементов на экране.
- Система событий: Генерирует пользовательское событие `canvaschange` при каждом изменении применяемого класса, позволяя реализовать логику за пределами CSS.
Библиотека предоставляет ядро, независимое от фреймворков, и специальный адаптер для Svelte. Она безопасна для SSR и поддерживает все современные браузеры.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.