IntersectionObserver

IntersectionObserver

This memo from ‘The Complete JavaScript Course 2024: From Zero to Expert!’ on Udemy.

const header = document.querySelector('.header');
const navHeight = nav.getBoundingClientRect().height; const stickyNav = function (entries) { const [entry] = entries; // entries[0] if (!entry.isIntersecting) nav.classList.add('sticky'); else nav.classList.remove('sticky');
}; const headerObserver = new IntersectionObserver(stickyNav, { root: null, threshold: 0, rootMargin: `-${navHeight}px`,
});
headerObserver.observe(header);
Enter fullscreen mode
Exit fullscreen mode

Bad way(The performance of the app on mobile devices is affected by the firing of an event on every scroll.)

const initialCoords = section1.getBoundingClientRect() window.addEventListener('scroll', function(e) { console.log(window.scrollY); if(window.scrollY > initialCoords.top) nav.classList.add('sticky'); else nav.classList.remove('sticky') }) const obsCallback = function (entries, observer) { entries.forEach(entry => { console.log(entry); });
}; const obsOptions = { root: null, threshold: [0, 0.2], // [0, 1, 0.2] (100%)
};
Enter fullscreen mode
Exit fullscreen mode

Discover more from Coursity

Subscribe to get the latest posts sent to your email.

Comments

No comments yet. Why don’t you start the discussion?

    Leave a Reply

    Your email address will not be published. Required fields are marked *