
Il pulsante d’invio
Pulsanti, Transizioni, SVG
NuovaGratis
L'avatar del profilo di un'app per escursionisti, fatto come una spilla cloisonné: fili d'oro piegati in un disegno e smalti nelle celle fra i fili. Scegliendo un altro animale gli smalti scolano via, i fili d'oro si sollevano, si piegano e scivolano nel disegno nuovo e gli smalti nuovi colano dall'alto cella per cella, ancora crudi: chiari, granulosi, opachi. Salvare è la cottura: il gettone si arroventa dal bordo verso il centro e tremola nel calore, la polvere si fonde in vetro, si raffredda dal bordo e ne esce lucido, con una lucidatura che passa come un riflesso.
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 enamel avatar</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/lexend@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the avatar of a hiking club's app, made like a cloisonné pin in a round recess of the profile card.
Each choice drains the enamels, bends the gold wires into the new drawing and runs the new enamels into
its cells, still wet and matte; saving fires the token in the kiln, and it cools glossy. The token is
drawn on the canvas; the choices under it are real radio buttons -->
<section class="card" aria-label="Your avatar" data-card data-autoclic>
<div class="card__coin">
<span class="card__slot" aria-hidden="true"></span>
<canvas class="card__canvas" aria-hidden="true" data-canvas></canvas>
<button class="card__token" type="button" tabindex="-1" aria-label="Edit avatar" data-token></button>
</div>
<div class="card__body">
<div class="rest" data-rest>
<h2 class="rest__name">Maya Lindqvist</h2>
<p class="rest__meta">@maya.lind · Trail crew</p>
<button class="btn btn--line" type="button" data-edit>Edit avatar</button>
</div>
<form class="editor" data-editor>
<fieldset class="editor__row" data-who>
<legend class="sr">Picture</legend>
</fieldset>
<fieldset class="editor__row" data-tint>
<legend class="sr">Colour</legend>
</fieldset>
<div class="editor__actions">
<button class="btn btn--soft" type="button" data-cancel>Cancel</button>
<button class="btn btn--ink" type="submit" data-save>
<svg class="btn__tick" viewBox="0 0 24 24" aria-hidden="true" data-tick><path d="M5.5 12.6l4.1 4.1L18.6 7.4"/></svg>
<span class="btn__label" data-save-text>Save</span>
</button>
</div>
</form>
</div>
<p class="sr" aria-live="polite" data-live></p>
</section>
</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.
40 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 «L'avatar smaltato» da Animorio e adattala al mio sitoOgni illustrazione è scritta una volta, come tracciati SVG: le celle col loro smalto (le pareti) e i fili da soli. All'avvio ogni parete diventa un anello di 64 punti alla stessa distanza, presi con getPointAtLength da un path nascosto della pagina; un filo aperto diventa un anello che va e torna. Ogni cella sa dove la raggiunge lo smalto (il suo punto più vicino a un punto sopra il gettone) e quanto deve correre per riempirsi.
Una cella si vede solo dove nessuna cella successiva le sta sopra: si ritaglia col suo tracciato e poi, per ogni cella successiva con la parete che la tocca, con «tutto tranne quella cella» (un quadrato grande col tracciato dentro, pari-dispari). I ritagli successivi si intersecano, quindi la sottrazione è esatta; i fili posati si nascondono allo stesso modo. I riflessi negli occhi non hanno parete e si posano sopra.
Fra due disegni gli anelli si accoppiano per posto e grandezza, prima le coppie più vicine; l'anello nuovo si ruota (e se serve si rovescia) perché i suoi punti si allineino ai vecchi col minimo cammino. I punti vanno con power3.inOut, ma ognuno parte un poco dopo il precedente (LAG), così la piega corre lungo il filo, in BEND secondi. Sollevati, i fili fanno una piccola ombra e si vedono interi; posandosi passano in dissolvenza alla versione ritagliata. Un filo senza compagno si stringe nel suo centro e svanisce, uno nuovo cresce dal suo.
Gli smalti vecchi scolano tornando verso il punto da cui erano entrati; i nuovi colano dall'alto: ogni cella comincia quando il flusso la raggiunge (la sua distanza dall'alto diviso FLOW) e si riempie con una macchia che cresce dal punto d'entrata, col bordo che ondeggia su due seni e un filo chiaro come un bordo bagnato. Lo smalto appena messo è polvere cruda: più chiaro, opaco, con una grana fine di puntini chiari e scuri (GRAIN) e senza lucentezza. Un colore nuovo cola nel fondo sopra il vecchio.
Save scalda il gettone in FIRE[0] secondi: il calore entra dal bordo (un gradiente radiale di undici tappe, ognuna col calore del suo raggio, dal rosso cupo all'arancio del forno), i fili d'oro brillano con un tratto in 'lighter', la luce si spande sulla scheda e il gettone tremola, ridisegnato in strisce di due pixel spostate di lato da due seni; intanto la polvere si fonde in vetro. Resta caldo finché il salvataggio non torna (qui uno finto di SAVING secondi), poi si raffredda in FIRE[1] secondi dal bordo al centro e una banda di luce corre in diagonale accendendo l'oro.
Animali e colori sono radio button veri con la loro aria-label in due fieldset; Edit avatar porta i tasti sull'animale scelto, le frecce cambiano scelta, Esc annulla, chiudendo la focalizzazione torna su Edit avatar, e una riga aria-live dice quando l'avatar si sta salvando, è salvato o le modifiche sono annullate. Tornando sull'avatar salvato quello che è ancora crudo torna cotto. Tutto gira sul ticker di GSAP solo mentre qualcosa si muove. Un clic da script (l'anteprima della libreria) racconta una piccola storia: apre, sceglie, salva, e di nuovo con altre scelte.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
INITIALS | script.js | 'ML' | Le lettere sul gettone quando non si sceglie un animale (le prime due). |
COLOURS | script.js | [['Midnight', '#24335c'], …] | Gli smalti del fondo: nome e colore. |
SAVED | script.js | [1, 1] | L'avatar salvato all'apertura: l'animale (0 = le iniziali) e il colore. |
BEND | script.js | 0.5 | I secondi che i fili d'oro impiegano a piegarsi nel disegno nuovo. |
FLOW | script.js | 170 | Quanto in fretta lo smalto cola nelle celle, in centesimi del gettone al secondo. |
GRAIN | script.js | 0.4 | Quanto lo smalto crudo è granuloso e opaco prima della cottura (0 = liscio). |
FIRE | script.js | [0.7, 1.1] | Il forno quando si salva: i secondi per arroventarsi e quelli per raffreddarsi. |
SAVING | script.js | 0.9 | Quanto dura il salvataggio finto, in secondi (in un'app vera, quanto ci mette la richiesta). |
Per il profilo di un'app o di una comunità, la scelta dell'avatar in una chat, in un gioco o in un club, le impostazioni dell'account di un servizio con avatar disegnati, un distintivo da collezionare, e in generale per una bozza che diventa definitiva salvando.
La scheda è larga 352 pixel (meno su uno schermo più stretto) e alta 330, e i sei piccoli gettoni e i sei colori ci stanno a 390 (su uno schermo ancora più stretto si rimpiccioliscono un poco). Tutto funziona col tocco: un tocco sul gettone apre le scelte, o ne sceglie una a caso con le scelte aperte; la luce che segue il mouse sul telefono si sposta solo nel punto toccato.
Niente fili che si piegano, niente smalto che cola, niente tremolio e niente lucidatura che corre: la faccia nuova compare in dissolvenza sopra la vecchia, il gettone si fa già fatto e la cottura è un bagliore arancio che si accende e si spegne in dissolvenza. Crudo e cotto si vedono lo stesso, la luce non segue il puntatore e le scelte si scambiano col nome con una dissolvenza.
GSAP 3.15.0, Lexend (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 19 KB; le librerie: GSAP 28 KB.
Provata il 6 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.