perf(hero): pause animations when hero scrolls out of view

Uses IntersectionObserver to toggle an .offscreen class on the hero
element, which sets animation-play-state: paused on the sheen, noise,
and scroll-cue animations. Avoids unnecessary GPU work while the hero
is not visible.

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Vinta Chen
2026-03-22 16:13:08 +08:00
parent e960d47b3f
commit 80a5596b11
2 changed files with 16 additions and 0 deletions
+6
View File
@@ -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: