
L’indicatore a lancetta
Contatori, Fisica, SVG
NuovaGratis
Ogni pressione lancia una moneta dal pulsante nel barattolo di vetro: la moneta vola in un arco girandosi su sé stessa, entra dalla bocca, cade sul mucchio con un piccolo rimbalzo, il barattolo oscilla e il totale sale. Premendo tante volte, volano tante monete insieme.
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 tip button</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/afacad@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the tip button: every press throws a coin from the button into the glass jar, turning over in the air; it
lands on the pile and the total under the button goes up. Above the jar there is nothing: the coins fly there -->
<div class="tip" data-tip data-autoclic>
<div class="tip__jar">
<svg class="tip__art" aria-hidden="true" data-art></svg>
</div>
<button class="tip__btn" type="button" data-btn>
<span class="tip__coin" aria-hidden="true" data-coin></span>
<span>Tip $1</span>
</button>
<p class="tip__total"><span class="tip__roll"><span data-total>$0</span></span> <span class="tip__said">tipped this week</span></p>
<p class="sr" aria-live="polite" data-live></p>
</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 «Il pulsante della mancia» da Animorio e adattala al mio sitoUn solo SVG copre tutto il componente, con 60 pixel di margine, e ha quattro gruppi in quest'ordine: il vetro dietro, il mucchio, il davanti del vetro (orlo, riflesso e scritta) e l'aria. Il barattolo si disegna dove la sua scatola è nella pagina (offsetLeft e offsetTop), così la moneta vola dal pulsante al barattolo nello stesso disegno.
Il volo è una curva di Bézier quadratica dalla moneta del pulsante, misurata a ogni lancio, a sopra il posto che la aspetta, all'altezza della bocca, con il punto di controllo TOSS pixel sopra il più alto dei due capi. La faccia è un cerchio schiacciato in verticale di |cos(t · SPINS · π)|, mai meno di 0,1: si vede sempre più di taglio e poi di nuovo piena, mentre gira piano su sé stessa.
Alla bocca la moneta passa nel gruppo del mucchio, che sta sotto il davanti del vetro: da lì si vede attraverso il vetro. Cade con power2.in nel tempo di una caduta vera da quell'altezza (radice di 2h su 2600), poi lascia il posto a una moneta coricata, bordo ed ellisse, che rimbalza di 5 pixel, e il barattolo oscilla di 1,6 gradi attorno al centro della base con elastic.out.
I posti sono a strati alterni di quattro e tre monete, 6 pixel più su a ogni strato e ognuno spostato di poco, così non sembrano una griglia; oltre le 26 monete le nuove si posano in cima e svaniscono. GSAP muove solo il gruppo interno di una moneta coricata: quello esterno ha il posto nell'attributo transform, e un transform di GSAP lo sostituirebbe.
Il totale sale quando la moneta tocca il mucchio: esce in alto e il numero nuovo entra dal basso con back.out(2), e una regione aria-live dice quanto è stato dato. Ogni pressione è indipendente, così più monete volano insieme. Un clic da script (l'anteprima della libreria) lancia due monete, a 0,32 secondi l'una dall'altra.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
TOSS | script.js | 110 | Quanto in alto vola la moneta sopra la bocca del barattolo, in pixel. |
SPINS | script.js | 2 | Quante volte la moneta si gira in aria. |
FLIGHT | script.js | 0.7 | I secondi dal pulsante alla bocca del barattolo. |
START | script.js | 6 | Le monete già nel barattolo. |
Per mance e piccole donazioni ripetute: il barattolo delle mance di un bar o di chi crea contenuti, il sostegno a un podcast, una raccolta fondi, i punti di una carta fedeltà, un salvadanaio in un'app di risparmio.
Il barattolo è largo 168 pixel e il pulsante alto almeno 56, tutto sta in uno schermo stretto; ogni tocco lancia una moneta senza aspettare il doppio tocco (touch-action manipulation), e toccando di fila volano più monete insieme.
Niente volo: la moneta compare sul mucchio con una dissolvenza di 0,2 secondi, senza il +$1, il totale cambia senza rotolare, il pulsante e la sua moneta non pulsano e il barattolo non oscilla; all'arrivo nulla si muove.
GSAP 3.15.0, Afacad (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 5,3 KB; le librerie: GSAP 28 KB.
Provata il 4 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.