
Il logo sotto la palla da demolizione
Intro, Fisica, SVG, Testo
NuovaGratis
Nello stile minimal: il numero degli iscritti a una newsletter appeso a una molla sottile disegnata a spirale. Un clic o il puntatore lo tirano giù, lasciato rimbalza con fisica vera, la molla si allunga e si stringe, il numero si assottiglia e si allarga nei suoi assi, e a ogni rimbalzo conta un iscritto in più.
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>Sprung</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/roboto-flex@5.3.0/standard.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- the whole page is the button that plucks the spring; the number can also be grabbed and pulled down -->
<main class="stage" data-stage data-autoclic tabindex="0" role="button" aria-label="A subscriber count hanging from a spring. Press to pull it down and let it bounce.">
<svg class="lines" data-lines aria-hidden="true">
<path class="rule" data-rule d="" />
<path class="dim" data-dim d="" />
<path class="coil coil--back" data-back d="" />
<path class="coil" data-front d="" />
<rect class="mount" data-mount x="0" y="0" width="0" height="3" rx="1" />
</svg>
<div class="body" data-body aria-hidden="true">
<span class="rail" data-rail></span>
<div class="count" data-count></div>
<p class="label" data-label></p>
</div>
<p class="hint" data-hint>Pull the number down and let go. Every bounce is one more reader.</p>
<p class="read" data-readout><span class="read__label">Today</span> <b class="read__value" data-today>+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.
17 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 numero appeso alla molla» da Animorio e adattala al mio sitoIl numero è un peso solo con posizione e velocità, mosso a passi fissi di un quattrocentottantesimo di secondo dentro gsap.ticker. La molla ha una sua lunghezza naturale e tira lungo la sua direzione con la legge di Hooke, la gravità tira giù e uno smorzamento frena: in tutto tre forze. La rigidità viene dalla frequenza del rimbalzo (in hertz) e la gravità da quanto il peso allunga la molla, così il numero sta fermo sempre allo stesso punto della pagina e il pendolo non entra in risonanza col rimbalzo.
La molla è un’elica ridisegnata a ogni fotogramma lungo la retta fra il morsetto e il binario: per ogni punto un angolo, uno spostamento di lato (il seno) e uno in giù (il coseno, poco: è la spira vista dall’alto). Il raggio cresce piano all’inizio e cala alla fine, così il filo esce dritto dal morsetto. Il coseno dice anche se il pezzo sta davanti o dietro: i pezzi davanti vanno in un tracciato nero, quelli dietro in uno grigio chiaro. Quando la molla si accorcia, il passo si stringe e le spire si avvicinano da sole.
Quanto la molla è allungata rispetto al riposo guida tre cose: l’asse della larghezza (font-stretch), il peso (font-weight) e un poco di scaleY. Il valore non va dritto al numero: passa per una piccola molla sua, più veloce e meno smorzata, così il carattere arriva un attimo dopo e trema appena prima di assestarsi. Allo stesso modo l’angolo del numero segue la molla con un piccolo ritardo, e il soffitto si piega di qualche pixel solo nel disegno.
La velocità lungo la molla dice quando il numero arriva in fondo (cambia da positiva a negativa) e quando arriva in cima (da negativa a positiva). In cima si guarda quanto è risalito dall’ultimo fondo: se supera dodici pixel è un rimbalzo vero e il numero sale di uno. Si conta solo dopo un clic o un lancio, non nell’entrata. Le cifre cambiate rotolano da destra a sinistra in una fessura col clip-path: la vecchia esce in su, la nuova entra da sotto con back.out, in vermiglio e con il peso alto; il peso scende subito, il colore resta finché la cifra dopo non la fa tornare nera.
Il clic è una timeline GSAP: il numero scende con power2.inOut fino a tre quarti della molla, resta un attimo e viene lasciato da fermo. Trascinando, una molla rigida e ben smorzata porta il numero verso il puntatore, così il lancio ha una velocità vera; oltre la corsa massima la molla cede sempre meno. Quando tutto è quasi fermo, il numero si mette al punto esatto di riposo e il ciclo si addormenta: la pagina torna sempre identica. Con il movimento ridotto niente si muove e il clic cambia la cifra in dissolvenza.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
START | script.js | 12480 | Il numero da cui parte il contatore. |
LABEL | script.js | 'Sprung subscribers' | La riga piccola sotto il numero (il nome della newsletter e cosa si conta). |
BOUNCE | script.js | 1.4 | Quante volte al secondo rimbalza, in hertz: 0.8 è una molla morbida e lenta, 3 una molla dura e nervosa. |
DAMPING | script.js | 0.09 | Quanto presto si spengono i rimbalzi: 0.03 rimbalza a lungo (e conta tanti iscritti), 0.3 si ferma quasi subito. |
PULL | script.js | 0.75 | Quanto il clic tira giù il numero, in parte della molla a riposo. |
COILS | script.js | 12 | Quante spire ha la molla. |
PER_BOUNCE | script.js | 1 | Di quanto cresce il numero a ogni rimbalzo (0 = non conta). |
--weight | style.css | 560 | Il peso del carattere del numero a riposo, da 100 a 1000. |
--stretch | style.css | 88 | La larghezza del carattere del numero a riposo: tirato si stringe, compresso si allarga. |
Per un numero che si lascia toccare: gli iscritti di una newsletter o di un canale, i biglietti venduti, i download di un’app, le firme di una petizione. Va bene nella pagina di iscrizione, nella pagina di grazie dopo l’iscrizione, in una landing page o in un pannello di un’app.
La stessa fisica con le misure adattate: il numero è più grande rispetto allo schermo, la molla più stretta e lunga quanto la stessa parte della pagina. Un tocco tira giù il numero, col dito lo si prende e lo si lancia.
Niente si muove: il soffitto, la molla e il numero compaiono in dissolvenza, già al loro posto. Il clic aggiunge un iscritto e la cifra cambia in dissolvenza.
GSAP 3.15.0, Roboto Flex (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 8,8 KB; le librerie: GSAP 28 KB.
Provata il 15 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.