IntersectionObserver - markhowellsmead/helpers GitHub Wiki

Simple example August 2023

const stickyElement = document.querySelector('.sht-block-editor-sidebar .shp-component--banner');

if (stickyElement) {
	const sentinel = document.createElement('span');
	sentinel.classList.add('o-sticky-sentinel');
	stickyElement.parentNode.insertBefore(sentinel, stickyElement);

	const handler = (entries) => {
		if (!entries[0].isIntersecting) {
			stickyElement.classList.add('is--stuck');
		} else {
			stickyElement.classList.remove('is--stuck');
		}
	};

	const observer = new window.IntersectionObserver(handler);
	observer.observe(sentinel);
}

Older example

IntersectionObserver to change navbar logo colour: see secret Gist (9.2.2023).