Van néhány görgető animáció, amelyek a CSS-ben JavaScript nélkül is elérhetők. Csak nézze meg a Scroll Indicator fejezetét, amely egyértelműen CSS varázslat. De sok görgetési animációs munkát végezhetünk közvetlenül a CSS-ben, csupán egy kis JavaScript-információval: mennyit görgetett az oldal.
Tehát tegyük ezt félre. JavaScript egysoros segítségével beállíthatunk egy CSS egyéni tulajdonságot, amely ismeri a görgetett oldal százalékos arányát:
window.addEventListener('scroll', () => ( document.body.style.setProperty('--scroll',window.pageYOffset / (document.body.offsetHeight - window.innerHeight)); ), false);
Most van --scroll
egy értékünk, amelyet felhasználhatunk a CSS-ben.
Ez a trükk Scott Kellum által jön, aki eléggé a CSS trükkmestere!
Állítsunk be egy animációt anélkül, hogy először ezt az értéket használnánk. Ez egy egyszerű pörgő animáció egy SVG elemhez, amely örökké forogni és forogni fog:
svg ( display: inline-block; animation: rotate 1s linear infinite; ) @keyframes rotate ( to ( transform: rotate(360deg); ) )
Itt jön a trükk! Most szüneteltessük ezt az animációt. Ahelyett, hogy egy időn keresztül animálnánk, a görgetési pozíción keresztül animáljuk animation-delay
az oldal görgetése közbeni beállításával . Ha az animation-duration
1-es, az azt jelenti, hogy görgetni kell az oldal teljes hosszát. az animáció egyik iterációja.
svg ( position: fixed; /* make sure it stays put so we can see it! */ animation: rotate 1s linear infinite; animation-play-state: paused; animation-delay: calc(var(--scroll) * -1s); )
Próbálja meg módosítani a animation-duration
a 0.5s
. Ez két animációt tesz lehetővé a animation-delay
matematikával.
Scott eredeti bemutatójában megjegyezte, hogy szintén:
animation-iteration-count: 1; animation-fill-mode: both;
Számos „túlszárnyalt” furcsaságot okozott, és igazolhatom, hogy én is láttam már, különösen a rövid nézetablakokban, ezért érdemes ezeket is beállítani.
Scott a görgetéssel kapcsolatos animációs tulajdonságokat :root ()
önmagában is beállította , vagyis egyszerre vezérelhette az oldalon található összes animációt. Itt van a bemutatója, amely egyszerre irányít három animációt: