Ответ
Intersection Observer — это API, позволяющий асинхронно отслеживать пересечение элемента с его родителем или viewport. Он эффективен для ленивой загрузки, бесконечного скролла или анимаций при появлении элемента.
Пример использования:
const observer = new IntersectionObserver((entries) => {
entries.forEach(entry => {
if (entry.isIntersecting) {
entry.target.classList.add('visible');
observer.unobserve(entry.target); // Отключаем наблюдение после появления
}
});
}, { threshold: 0.1 }); // Срабатывает при 10% видимости
document.querySelectorAll('.lazy-load').forEach(el => observer.observe(el));
Плюсы:
- Высокая производительность (не использует scroll/listener)
- Гибкость (настройка root, threshold, rootMargin)
- Поддержка во всех современных браузерах