
Il logo sotto la palla da demolizione
Intro, Fisica, SVG, Testo
NuovaGratis
Nello stile minimal, con fisica vera: una frase dove ogni lettera è un peso legato alle vicine da molle, chiusa fra due pareti sottili. Una parete batte e un’onda di compressione corre lungo la frase come il suono nell’aria, rimbalza sull’altra parete e torna, sempre più debole: dove passa le lettere si stringono, ingrassano e diventano blu sugli assi del carattere variabile, e sotto una traccia sottile disegna la pressione.
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>Hall acoustics</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/roboto-flex@5.3.0/full.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- the whole room is the button: a click knocks the sentence from the nearer end; a letter can be pulled and let go -->
<main class="stage" data-stage tabindex="0" role="button" aria-label="A sentence made of letters on springs. Press to knock it from one end and watch the push travel along it.">
<header class="top">
<span class="top__brand">Hall</span>
<span class="top__note">Acoustics for rooms that carry a voice</span>
</header>
<!-- the sentence: the script splits it into letters, each one a weight on a spring between its neighbours -->
<h1 class="line" data-line>a push, passed along</h1>
<svg class="scope" data-svg aria-hidden="true">
<path class="wall" data-wall-l d="" />
<path class="wall" data-wall-r d="" />
<path class="axis" data-axis d="" />
<path class="marks" data-marks d="" />
<path class="trace" data-trace d="" />
</svg>
<p class="hint" data-hint>Click near an end to knock the sentence, or pull a letter.</p>
<p class="read" data-readout><span class="read__label">Compression</span> <b class="read__value" data-read>0%</b></p>
</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.
16 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 «Il colpo che attraversa la frase» da Animorio e adattala al mio sitoLa frase si divide in lettere, ognuna in uno span messo dallo script attorno al suo centro. Ogni lettera ha una massa proporzionale alla sua larghezza e ogni molla fra due lettere è tanto più rigida quanto più è corta: così, come in un materiale uniforme, l’onda corre alla stessa velocità dappertutto, e la velocità è la larghezza della frase divisa per CROSS secondi. Altre due molle legano la prima e l’ultima lettera alle pareti.
Il colpo non è un’animazione delle lettere: è la parete che si muove, entrando con mezzo coseno in un tempo breve e uscendo otto volte più piano, e il moto della parete tira la prima molla. La durata del colpo è quella che serve all’onda per attraversare cinque lettere: più corta, le molle fra lettere singole la sbriciolavano in increspature (un reticolo di molle disperde le onde che hanno la lunghezza di pochi passi).
La fisica gira a passi fissi di un milleduecentesimo di secondo dentro gsap.ticker, e il tempo di ogni fotogramma non supera un trentesimo di secondo. L’aria toglie velocità perché l’onda si spenga in circa ECHOES traversate; un poco di attrito dentro le molle (proporzionale alla differenza di velocità fra vicine) calma il tremolio fine senza toccare l’onda grande. Quando tutto è fermo la frase si addormenta e non si ridisegna più.
Per ogni lettera la compressione è uno meno l’allungamento delle sue due molle. Compressa, la lettera si stringe sull’asse wdth e prende peso su wght (font-variation-settings di Roboto Flex) e passa al blu con gsap.utils.interpolate; tirata, si allarga e si alleggerisce. Il peso cresce meno della larghezza che si perde: con troppo peso le lettere compresse si toccavano. La traccia sotto passa per la compressione di ogni lettera con una curva di Catmull-Rom.
Un gsap.delayedCall fa battere una parete ogni EVERY secondi, prima una e poi l’altra; un clic batte subito dalla parete più vicina e rimette in fila il giro. Una lettera presa segue il puntatore di lato, guidata, e tira le molle; lasciata, manda un’onda per parte. Ogni colpo riparte dalla frase ferma (quello che resta del colpo prima, un pixel o due, si lascia andare), quindi il giro torna sempre uguale.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
CROSS | script.js | 1.1 | Quanti secondi impiega il colpo per andare da un capo all’altro della frase. |
KNOCK | script.js | 1 | Quanto forte batte la parete: 0.5 è un tocco, 1.6 è un colpo secco. |
ECHOES | script.js | 3 | Circa quante volte il colpo attraversa la frase prima di spegnersi. |
SQUEEZE | script.js | 1 | Quanto le lettere rispondono sugli assi della larghezza e del peso (0 = per niente). |
EVERY | script.js | 4.5 | Ogni quanti secondi batte una parete quando la pagina è lasciata sola, prima una e poi l’altra. |
--accent | style.css | #2b4cff | Il colore della parete che batte e delle lettere più compresse. |
--weight | style.css | 380 | Il peso del carattere della frase a riposo, da 100 a 900. |
Per una frase che deve far sentire qualcosa che passa di mano in mano: lo studio di acustica, un’etichetta musicale, un podcast, la pagina di un servizio di consegne o di un passaparola, il titolo di una landing page che spiega come una cosa si propaga. Funziona con qualunque frase di una riga, fino a quaranta caratteri.
La stessa fisica: la frase occupa quasi tutta la larghezza e il colpo è sempre lungo cinque lettere, quindi l’onda si legge uguale. Un tocco batte dalla parete più vicina, una lettera si tira col dito.
Niente si muove: la frase compare in dissolvenza. Il clic la fa sparire e ricomparire nel momento in cui l’onda è a metà, calcolato in silenzio (lettere compresse in blu, la traccia con la sua gobba), e dopo un poco torna ferma, sempre in dissolvenza.
GSAP 3.15.0, Roboto Flex (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 8,4 KB; le librerie: GSAP 28 KB.
Provata il 19 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.