
Il caricamento che diventa marchio
Transizioni, SVG, Testo
NuovaGratis
Un cambio di pagina nello stile minimal: al clic la pagina si stacca dal tavolo e si scopre che è il primo foglio di un blocco, coi fogli sotto appena sfalsati. Un pollice lo sfoglia di lato velocissimo e ogni foglio è un fotogramma: il titolo vecchio affonda, quello nuovo sale e prende peso. Il blocco si ferma con un piccolo colpo sulla pagina segnata dal nastrino rosso.
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 thumb riffle transition</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/fraunces@5.3.0/full.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage" data-stage>
<!-- the pad: the two real pages are its top and its bottom sheet; the thin sheets in between are added by the script -->
<div class="deck" data-deck>
<div class="pan" data-pan>
<section class="sheet page page--a" data-page="a" aria-label="Notebooks">
<header class="bar" data-bar>
<span class="brand">Quire</span>
<nav class="nav" aria-label="Pages">
<a href="#notebooks" aria-current="page">Notebooks</a>
<a href="#archive" data-go="b">Archive</a>
</nav>
</header>
<div class="hero">
<p class="kicker" data-rise>Notebooks, sewn by hand</p>
<h1 class="big big--a" data-big>Blank pages.</h1>
<a class="go" href="#archive" data-go="b" data-autoclic data-rise>
<span class="go__text">Open the archive</span>
<span class="go__arrow" aria-hidden="true"><span class="go__shaft"></span><svg class="go__head" viewBox="0 0 8 12"><path d="M1.5 1.5 6.5 6l-5 4.5"/></svg></span>
</a>
</div>
<footer class="foot" data-foot>
<span>Bound in small runs</span>
<span>Since 2011</span>
</footer>
<span class="sheet__shade" aria-hidden="true"></span>
</section>
<section class="sheet page page--b" data-page="b" aria-label="Archive" aria-hidden="true">
<header class="bar" data-bar>
<span class="brand">Quire</span>
<nav class="nav" aria-label="Pages">
<a href="#notebooks" data-go="a">Notebooks</a>
<a href="#archive" aria-current="page">Archive</a>
</nav>
</header>
<div class="hero">
<h2 class="big big--b" data-big>Archive</h2>
<div class="below">
<p class="lede" data-rise>Every notebook we have bound since the first one, kept on a shelf and still open to read.</p>
<a class="go go--back" href="#notebooks" data-go="a" data-autoclic data-rise>
<span class="go__arrow" aria-hidden="true"><svg class="go__head" viewBox="0 0 8 12"><path d="M6.5 1.5 1.5 6l5 4.5"/></svg><span class="go__shaft"></span></span>
<span class="go__text">Back to notebooks</span>
</a>
</div>
</div>
<footer class="foot" data-foot>
<span>Open on Saturdays</span>
<span>Since 2011</span>
</footer>
<!-- the ribbon marker: it hangs out of the pad at the page the thumb will stop on -->
<span class="ribbon" data-ribbon aria-hidden="true"></span>
<span class="sheet__shade" aria-hidden="true"></span>
</section>
</div>
</div>
</main>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/gsap.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.
28 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 «La transizione col pollice» da Animorio e adattala al mio sitoLe due pagine sono il primo e l’ultimo foglio di una pila di elementi uno sopra l’altro, ognuno grande come lo schermo, con lo z-index che scende. Lo script aggiunge in mezzo SHEETS fogli finti e tre fogli sotto l’ultima pagina, il resto del blocco. Ogni foglio ha un bordo di un pixel fatto con box-shadow: 0 0 0 1px, che non cambia le misure. Quando il blocco è a tutto schermo i fogli stanno tutti a zero e si vede solo il primo.
Il foglio k è il fotogramma f = k / (SHEETS + 1). Il suo colore è un miscuglio fra la carta e il nero in proporzione f, e la scritta passa da nera a chiara a metà. Le lettere del titolo vecchio sono spostate in giù di q² × 1,3 em e alleggerite, quelle del titolo nuovo arrivano dal basso con una curva back.out calcolata a mano (sorpassano di un capello) e passano da 130 a 600 di peso. Ogni lettera ha il suo ritardo, quindi le parole si smontano e si montano da sinistra a destra. Le lettere stanno in una maschera con overflow: hidden, così spariscono sotto la riga.
Il blocco rimpicciolisce a LIFT e i fogli si spostano di i × SPREAD pixel a destra e un po’ meno in basso, con mezzo pixel di disordine. Poi ogni foglio gira attorno al bordo sinistro fino a rotateY(90°), di taglio, con transformPerspective di 1,4 volte la larghezza e un’ombra che si scurisce mentre gira; arrivato a 90 gradi sparisce. Le partenze sono distribuite su RIFFLE secondi con una curva che rallenta appena verso la fine. Il contenitore dei fogli segue la somma delle rotazioni, così il foglio in cima resta fermo dove stava la pagina.
Quando l’ultimo foglio è andato, il blocco si schiaccia dell’1,4 % in 0,07 secondi e torna con elastic.out(1, 0.35); i fogli sotto si avvicinano a quello in cima e si riallargano con un elastico, il nastrino dà un colpo di lato e dondola con elastic.out(1, 0.2). Il nastrino è dentro la seconda pagina, appeso sotto il suo bordo: con il blocco a tutto schermo resta fuori dal palco, quando il blocco si stacca esce da solo e segna dove il pollice si fermerà. KNOCK regola la forza di tutto il colpo.
Ogni passaggio è una timeline sola con le etichette lift, catch, riffle, knock e close, e timeScale per SPEED. Le partenze dei fogli si calcolano in numeri e non con etichette annidate. Un clic che arriva mentre il blocco si sfoglia aspetta in coda. I due titoli si adattano alla larghezza dello schermo e lo spostamento dei fogli si riduce sugli schermi stretti. Con il movimento ridotto i fogli in mezzo non si vedono mai e le due pagine si scambiano in dissolvenza.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
SHEETS | script.js | 12 | Quanti fogli ci sono fra le due pagine: ognuno è un fotogramma del flip book. Più fogli, sfogliata più fitta e titolo più morbido. |
RIFFLE | script.js | 0.8 | I secondi che il pollice impiega a passare tutto il blocco. |
LIFT | script.js | 0.84 | Quanto resta grande il blocco mentre si sfoglia: 1 = non si stacca mai dallo schermo. |
SPREAD | script.js | 3 | Di quanti pixel ogni foglio sporge da quello sopra: il bordo a ventaglio del blocco. 0 = fogli pari. |
KNOCK | script.js | 1 | La forza del colpo quando il blocco si ferma: 0 = si ferma e basta, 2 = un colpo deciso. |
SPEED | script.js | 1 | La velocità di tutto: 2 è il doppio, 0.5 la metà. |
Per passare da una pagina all’altra in un sito che parla di carta e di libri: una casa editrice, una rivista, una cartoleria o una legatoria, il portfolio di un illustratore, l’archivio di un giornale, il passaggio fra un elenco e la scheda di un libro. Funziona bene fra una pagina chiara e una scura.
La stessa sfogliata con le misure adattate: il blocco diventa un quaderno alto e stretto, i fogli sporgono un po’ meno e i titoli si stringono fino a stare nella larghezza dello schermo. Un tocco sul link lo sfoglia e lo risfoglia indietro.
Niente si sposta e niente gira: i fogli in mezzo non si vedono, la prima pagina svanisce mentre sotto c’è già la seconda col titolo al suo posto, poi compaiono il testo e il link; al ritorno la prima pagina torna in dissolvenza.
GSAP 3.15.0, Fraunces (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 8,6 KB; le librerie: GSAP 28 KB.
Provata il 14 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.