
Lettere in piedi con l'ombra lunga
Testo, Scroll, 3D
NuovaGratis
Scorri dentro l’anteprima
I servizi di uno studio su tre carte che si sovrappongono, nello stile minimal: ogni carta sale storta e spostata di lato, la successiva dall’altra parte, e si raddrizza arrivando in alto, legata allo scroll. Il titolo la segue: puntini tondi e sottili finché è storta, pixel quadrati e pieni quando è dritta.
Una cartella che funziona da sola: index.html, style.css, script.js e le librerie da CDN. Nelle schede React e Vue la stessa demo è già un componente, che spegne le sue animazioni quando esce dalla pagina.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>The cards that straighten up</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/bitcount-prop-single@5.3.0/full.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/instrument-sans@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- the services of a made-up games studio, Pixmoor, on three overlapping cards. Each card comes up tilted and
off to one side, the next one the other way, and straightens as it reaches the top of the screen; its title
turns from thin round dots into solid square pixels as it does. Leaving, the card tips over the other way -->
<main class="pagina">
<header class="apertura">
<p class="occhiello">Pixmoor, what we make</p>
<h1 class="apertura__titolo">Three things, done properly.</h1>
<p class="scendi">Scroll</p>
</header>
<section class="mazzo" aria-label="Services">
<article class="carta carta--chiara" data-carta>
<div class="carta__dentro" data-dentro>
<h2 class="carta__titolo" data-titolo>Level design</h2>
<ul class="carta__voci">
<li>Worlds</li>
<li>Puzzles</li>
<li>Pacing</li>
</ul>
<p class="carta__testo">Maps that teach without a tutorial, and a last room people talk about.</p>
</div>
</article>
<article class="carta carta--scura" data-carta>
<div class="carta__dentro" data-dentro>
<h2 class="carta__titolo" data-titolo>Characters</h2>
<ul class="carta__voci">
<li>Sprites</li>
<li>Animation</li>
<li>Voices</li>
</ul>
<p class="carta__testo">Heroes with a walk you would know from across the screen.</p>
</div>
</article>
<article class="carta carta--accento" data-carta>
<div class="carta__dentro" data-dentro>
<h2 class="carta__titolo" data-titolo>Trailers</h2>
<ul class="carta__voci">
<li>Teasers</li>
<li>Launch</li>
<li>Store pages</li>
</ul>
<p class="carta__testo">Ninety seconds that sell the feeling of the first hour.</p>
</div>
</article>
</section>
<footer class="chiusura">
<p class="chiusura__titolo">Got a game?</p>
</footer>
</main>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/ScrollTrigger.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/lenis@1.3.26/dist/lenis.min.js"></script>
<script src="script.js"></script>
</body>
</html>Cambia valori, colori e testi con le manopole e guarda l’animazione rispondere dal vivo. Oppure scrivi tu nel codice. Poi scarica la cartella con le tue modifiche.
32 valori da cambiare
Col connettore di Animorio, Claude Code la prende da qui con tutta la sua guida e la adatta al tuo progetto. Incolla questa richiesta:
Prendi «Le carte che si raddrizzano» da Animorio e adattala al mio sitoOgni carta ha una timeline legata allo scroll con scrub, da quando il suo bordo alto entra dal fondo dello schermo a quando arriva a SETTLE: parte da rotate TILT e xPercent SHIFT, con il segno che cambia da una carta all’altra, e torna a zero con power1.out, quindi si raddrizza presto e si posa piano.
Una seconda timeline va da SETTLE a quando la carta esce in alto: inclina l’interno della carta dall’altra parte e lo sposta ancora di lato, con power1.in, quindi parte piano e accelera. Le due timeline muovono due elementi diversi, la carta e il suo interno, così non si contendono il transform.
Il titolo ha due proprietà CSS, --forma e --peso, che entrano in font-variation-settings (l’asse ELSH di Bitcount) e font-weight. Le stesse timeline le portano da ROUND e LIGHT a 50 e 700 entrando e indietro uscendo; all’uscita il tween è un fromTo con immediateRender: false, così il punto di partenza è sempre quello giusto.
Con gsap.matchMedia sul telefono inclinazione e spostamento sono a metà. Lenis rende lo scroll morbido e corto, SMOOTH secondi con una curva che frena, come sul sito.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
TILT | script.js | 8 | Quanto è inclinata una carta entrando e uscendo, in gradi (la metà sul telefono). |
SHIFT | script.js | 10 | Di quanto è spostata di lato, in percentuale della sua larghezza (la metà sul telefono). |
SETTLE | script.js | 'top 20%' | Dove la carta è dritta: quando il suo bordo alto arriva a questo punto dello schermo. |
LIGHT | script.js | 300 | Il peso del titolo a carta storta; dritta è 700. |
ROUND | script.js | 0 | La forma dei puntini del titolo a carta storta: 0 tondi, 50 quadrati. |
SMOOTH | script.js | 0.5 | I secondi dello scroll morbido; 0 per quello del browser. |
Per i servizi di uno studio o di un’agenzia, i piani di un’app, le sezioni di una pagina di presentazione: tre o quattro carte grandi, una dopo l’altra.
Uguale, con l’inclinazione e lo spostamento a metà e il testo della carta sotto alle voci.
Le carte restano dritte e ferme e il titolo è già in pixel quadrati; lo scroll non è ammorbidito.
GSAP 3.15.0, Lenis 1.3.26, Bitcount Prop Single (font variabile) 5.3.0, Instrument Sans (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 3,7 KB; le librerie: GSAP + ScrollTrigger 45 KB, Lenis 5,3 KB.
Provata il 17 ottobre 2026
Puoi usarla nei tuoi progetti e in quelli dei tuoi clienti. Non puoi rivenderla né ridistribuirla così com’è. GSAP resta sotto la sua licenza Standard. Licenza completa.
Con l’email e la password del tuo account.
oppure con l’email
Hai fatto l’accesso come .
Con l’account scarichi lo zip di ogni animazione e di ogni pacchetto, gratis.