Refresh ScrollTrigger On Scroll Into View

Utility
Scroll
GSAP
ScrollTrigger
JS
  • Give an element or section the attribute name of data-refresh-scrolltrigger
  • When the element first enters view, it will refresh ScrollTrigger's markers
  • This is helpful if ScrollTrigger's positions are getting out of sync from the page height changing.
<script>
document.addEventListener("DOMContentLoaded", () => {
	if (typeof ScrollTrigger === "undefined") return;
	document.querySelectorAll("[data-refresh-scrolltrigger]").forEach(target => {
		const observer = new IntersectionObserver((entries, observerInstance) => {
			entries.forEach(entry => {
				if (!entry.isIntersecting) return;
				ScrollTrigger.refresh();
				observerInstance.unobserve(entry.target);
			});
		}, { threshold: 0.1 });
		observer.observe(target);
	});
});
</script>
Last Updated: Dec 3, 2025
  • Give an element or section the attribute name of data-refresh-scrolltrigger
  • When the element first enters view, it will refresh ScrollTrigger's markers
  • This is helpful if ScrollTrigger's positions are getting out of sync from the page height changing.
<script>
document.addEventListener("DOMContentLoaded", () => {
	if (typeof ScrollTrigger === "undefined") return;
	document.querySelectorAll("[data-refresh-scrolltrigger]").forEach(target => {
		const observer = new IntersectionObserver((entries, observerInstance) => {
			entries.forEach(entry => {
				if (!entry.isIntersecting) return;
				ScrollTrigger.refresh();
				observerInstance.unobserve(entry.target);
			});
		}, { threshold: 0.1 });
		observer.observe(target);
	});
});
</script>