mirror of
https://github.com/vinta/awesome-python.git
synced 2026-05-30 04:32:02 +08:00
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:
@@ -41,6 +41,16 @@ function initRevealSections() {
|
|||||||
|
|
||||||
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
|
// Relative time formatting
|
||||||
function relativeTime(isoStr) {
|
function relativeTime(isoStr) {
|
||||||
var date = new Date(isoStr);
|
var date = new Date(isoStr);
|
||||||
|
|||||||
@@ -152,6 +152,12 @@ kbd {
|
|||||||
animation: sheen-drift 18s linear infinite;
|
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 {
|
.hero-noise {
|
||||||
opacity: 0.1;
|
opacity: 0.1;
|
||||||
background-image:
|
background-image:
|
||||||
|
|||||||
Reference in New Issue
Block a user