
I glifi che si voltano
Hover, Testo, 3D
NuovaGratis
Nello stile minimal: una pila di fogli sottilissimi in 3D, vista di taglio, con una lettera stampata nell’angolo di ogni foglio. Chiusa si vedono solo i bordi dei fogli, righe sottili e una vermiglia; il puntatore, o il dito, gira la pila di tre quarti e la apre a ventaglio come un mazzo di carte, ogni foglio sulla sua molla, finché le lettere scoperte si leggono come una parola.
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 word in the fanned sheets</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage" data-stage>
<!-- the word people read; the sheets below are only its picture -->
<h1 class="sr" data-read>Sheaf</h1>
<!-- a stack of very thin sheets seen from three quarters, one letter on each. Closed and turned edge on, only the
edges of the sheets show, one of them in the accent colour; across the page the pointer (or a finger) turns
the stack towards you and fans it open like a deck of cards, until the letters read as a word -->
<div class="scene" aria-hidden="true" data-scene>
<div class="deck" data-deck></div>
</div>
<!-- the same thing for the keyboard: a slider that opens and closes the fan -->
<div class="handle" role="slider" tabindex="0" aria-label="Fan the sheets" aria-valuemin="0" aria-valuemax="100" aria-valuenow="100" data-handle></div>
<p class="note" aria-hidden="true">
<span class="note__hint" data-hint>Move across the page</span>
<span class="note__rule"></span>
<span class="note__deg" data-deg>0°</span>
</p>
<!-- an invisible letter, to measure how wide each one is on the width axis -->
<div class="probe" aria-hidden="true" data-probe></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.
15 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 parola nei fogli a ventaglio» da Animorio e adattala al mio sitoOgni lettera della parola è un foglio: un div con transform-style: preserve-3d dentro un mazzo che ha la prospettiva, distanziato dagli altri di GAP pixel su translateZ. Lo spessore del foglio è un secondo div largo un pixel e mezzo, girato di 90 gradi con rotateY sul bordo sinistro: quando tutto il mazzo è girato di 90 gradi le facce spariscono di taglio e restano solo questi bordi, righe fitte con una vermiglia (il foglio in fondo alla pila). Il mazzo intero gira con rotateY da 90 gradi a TURN e si inclina di qualche grado con rotateX, così lo si guarda un poco dall’alto.
Ogni foglio gira nel suo piano con rotateZ, e il transform-origin è un punto fuori dal foglio, sotto il suo piede (a PIVOT altezze di distanza): così i fogli si aprono come un mazzo tenuto in mano, in un arco morbido. L’angolo del foglio i è (i − metà) volte FAN diviso il numero dei fogli meno uno, moltiplicato per quanto è aperto quel foglio. La misura dei fogli si calcola girando i quattro angoli di ogni foglio attorno al perno: il ventaglio aperto deve stare nella pagina, sul computer e sul telefono.
Il puntatore non muove i fogli: dice a che punto deve essere la pila, da 0 (chiusa di taglio) a 1 (aperta). Prima la pila gira verso di te (fino a 0,55), poi si apre il ventaglio (da 0,3): chiudendo succede il contrario. Ogni foglio insegue il suo bersaglio con una molla smorzata calcolata a piccoli passi di 1/240 di secondo; i fogli davanti hanno la molla più rigida di quelli dietro, quindi il ventaglio si apre e si chiude a onda. BOUNCE abbassa lo smorzamento: col valore normale ogni foglio va oltre di un pixel e torna. Quando una molla è ferma si blocca del tutto, così il browser smette di ridisegnare e le lettere tornano nitide.
La lettera sta nell’angolo in alto a sinistra di ogni foglio, nella striscia che il foglio sopra lascia scoperta. Quella striscia si calcola: il bordo sinistro del foglio sopra, girato attorno al perno della differenza fra i due angoli, dove taglia il piede della lettera. Con il ventaglio aperto una ricerca binaria sull’asse wdth di Archivo, da 62 a 125, trova la larghezza che riempie la striscia per ogni lettera; a ogni fotogramma la lettera prende la parte di quella larghezza (e del peso, da 300 a WEIGHT) che corrisponde a quanto la sua striscia è aperta. Se la lettera più larga non ci sta nemmeno stretta, tutte diventano più piccole.
L’apertura è una timeline GSAP: i bordi si disegnano con scaleY dall’alto, uno dopo l’altro, quello vermiglio per ultimo, con back.out che va un filo oltre; le facce compaiono, e un tween porta la pila da 0 a 1 mentre le molle la seguono. Poi comanda il puntatore: la sua posizione orizzontale, fra il 15 e il 70 per cento della pagina, è l’apertura, e quella verticale inclina la pila di qualche grado. Il dito comanda solo mentre tocca; quando esce il mouse o si stacca il dito un tween riporta la pila aperta. Per la tastiera c’è un role=slider: le frecce aprono e chiudono a quarti, Home e End agli estremi.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
WORD | script.js | 'Sheaf' | La parola: un foglio per ogni lettera, da 2 a 9 lettere. Gli spazi si tolgono. |
FAN | script.js | 40 | Quanto si apre il ventaglio, in gradi, dal primo foglio all’ultimo. Più è aperto, più le lettere hanno spazio. |
TURN | script.js | 30 | Quanto resta girata la pila aperta, in gradi: 0 è di fronte, 60 molto di sbieco. |
GAP | script.js | 5 | Lo spazio fra un foglio e l’altro, in pixel: decide quanto è ariosa la pila vista di taglio. |
WEIGHT | script.js | 720 | Il peso di una lettera quando la sua striscia è aperta, da 300 a 900; coperta pesa 300. |
BOUNCE | script.js | 0.35 | Quanto i fogli vanno oltre il loro posto prima di fermarsi: 0 niente, 1 un piccolo rimbalzo. |
SPEED | script.js | 1 | La velocità delle molle e dell’apertura: 2 è il doppio, 0.5 la metà. |
Per il titolo d’apertura di una cartoleria, di una legatoria o di una tipografia, di un archivio, di una rivista di carta o di uno studio di grafica, dove la parola è anche un oggetto da sfogliare; anche per il nome di un marchio corto in una landing, o per un portfolio che si presenta con una parola sola. Funziona con parole da quattro a sette lettere.
La stessa animazione: il ventaglio aperto prende più di otto decimi della larghezza dello schermo, i fogli e le lettere si misurano su di lui, e la pila si apre e si chiude trascinando il dito sulla pagina; staccato il dito, torna aperta.
Niente gira e niente si apre: il ventaglio compare in dissolvenza già aperto, di tre quarti, con la parola che si legge; il puntatore non lo muove e la riga in basso non c’è.
GSAP 3.15.0, Archivo (font variabile, assi wdth e wght) 5.3.0.
Compressi con gzip, i tre file della demo pesano 8,0 KB; le librerie: GSAP 28 KB.
Provata il 16 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.