diff --git a/website/static/main.js b/website/static/main.js index 83d5be04..da58fe22 100644 --- a/website/static/main.js +++ b/website/static/main.js @@ -41,6 +41,16 @@ function initRevealSections() { initRevealSections(); +// Pause hero animations when scrolled out of view +(function () { + var hero = document.querySelector('.hero'); + if (!hero || !('IntersectionObserver' in window)) return; + var observer = new IntersectionObserver(function (entries) { + hero.classList.toggle('offscreen', !entries[0].isIntersecting); + }); + observer.observe(hero); +})(); + // Relative time formatting function relativeTime(isoStr) { var date = new Date(isoStr); diff --git a/website/static/style.css b/website/static/style.css index efc2afb2..17cd5fc6 100644 --- a/website/static/style.css +++ b/website/static/style.css @@ -152,6 +152,12 @@ kbd { animation: sheen-drift 18s linear infinite; } +.hero.offscreen .hero-sheen, +.hero.offscreen .hero-noise, +.hero.offscreen .hero-scrollcue::after { + animation-play-state: paused; +} + .hero-noise { opacity: 0.1; background-image: