
Il pulsante che copia
Pulsanti, Testo, SVG, Fisica
NuovaGratis
Il pulsante Rebuild di uno strumento di deploy, scritto con un carattere a tratti fatto da noi: ogni lettera è un'asta, un arco, un anello, disegnati in SVG a ogni fotogramma. Al clic la parola si smonta nei suoi tratti, che cadono in un mucchio sul fondo della pillola, rotolano e si fermano; poi risalgono uno alla volta, piegandosi in volo nella forma nuova, finché la parola dice Rebuilt e la spunta arriva per ultima.
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 button that rebuilds itself</title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the button that rebuilds itself: the Rebuild button of a deploy tool. Its words are not a font file: every
letter is a few strokes, straight or round, drawn as SVG paths. A click breaks the word into its strokes, they
fall into a heap at the bottom of the pill, and then fly back up one by one, bending on the way, to spell the
new words -->
<div class="kit" data-kit>
<button class="kit__btn" type="button" data-btn data-autoclic>
<svg class="kit__art" aria-hidden="true" data-art>
<g class="kit__guides" data-guides></g>
<g class="kit__pieces" data-pieces></g>
</svg>
<span class="sr" data-name>Rebuild</span>
</button>
<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.
26 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 che si ricostruisce» da Animorio e adattala al mio sitoOgni lettera è un elenco di tratti su una griglia dove le minuscole sono alte 10 e le maiuscole 14: ln(x1, y1, x2, y2) è un tratto dritto, arc(cx, cy, r, da, a) un arco di cerchio in gradi, dot(x, y) un punto. Ci sono tutte le lettere, le cifre e la punteggiatura comune, quindi REST e DONE possono dire qualunque cosa. La spaziatura nasce dalla forma dei lati: dritto, tondo, aperto, diagonale, o che sporge sul vicino come il braccio della f e il ricciolo della j. Il tratto ha le punte tonde, così un tratto lungo zero è il puntino della i.
Ogni tratto si disegna a ogni fotogramma da quattro numeri: dov'è il suo centro, da che parte punta lì, quanto è lungo e quanto si piega (uno diviso il raggio). Una barra è un tratto che non si piega, un anello uno che si piega fino a fare il giro; quindi qualunque tratto può diventare qualunque altro interpolando i quattro numeri. Il percorso SVG è una linea, oppure archi di un quarto di giro al massimo, perché un arco SVG non sa fare un cerchio intero.
Al clic ogni tratto diventa un corpo rigido fatto di una fila di perline, un po' più vicine di quanto sono larghe, così niente ci passa in mezzo. Verlet muove le perline a passi di 1/240 di secondo; poi, tre volte: le perline di tratti diversi si spingono via, quelle uscite dalla pillola tornano dentro (la pillola è uno stadio: due semicerchi e una striscia), e ogni tratto riprende la sua forma, girato e spostato in modo da stare il più vicino possibile alle sue perline (shape matching, Müller e altri, 2005). Rimbalzo BOUNCE e presa GRIP si calcolano sulle perline che hanno toccato il fondo, con la velocità che avevano prima dell'urto: per questo gli anelli rotolano e le barre scivolano. Quando il mucchio sta fermo la fisica si spegne.
Per la parola nuova ogni posto deve avere un tratto. Il costo di una mossa è la strada da fare, più quanto il tratto deve allungarsi e piegarsi, più un prezzo fisso per muoversi del tutto; l'algoritmo ungherese (Kuhn e Munkres) trova la spartizione col costo totale più basso. Così ogni tratto va al posto più vicino con la forma più simile, e nel ritorno si muovono solo i tratti che cambiano. Se le parole hanno più o meno tratti, quelli che avanzano si restringono a niente e quelli che mancano nascono da un punto.
I tratti lasciano il mucchio uno alla volta, in BUILD secondi in tutto, nell'ordine delle lettere e con l'icona per ultima. Ogni volo dura FLIGHT secondi: il centro corre su una curva di Bézier che si alza di LIFT pixel, con un back.out che arriva un filo oltre e torna; la forma cambia a metà strada con un power2.inOut. Il tratto gira dalla parte più corta, sapendo che un tratto girato di mezzo giro e piegato al contrario è lo stesso tratto. Nel mucchio i tratti si spengono nel colore --loose e riprendono il loro colore in volo, quindi la parola si accende mentre si ricompone.
Entrando, il puntatore manda un'onda di scosse da dove arriva: ogni tratto riceve una spinta di rotazione e un salto verso l'alto, e una molla rigida e poco smorzata (900 di rigidezza, 15 di smorzamento) lo riporta a posto con un brivido. Passando sopra, ogni tratto vicino riceve una torsione: il prodotto vettoriale fra dove sta rispetto al puntatore e dove va il puntatore, più una torsione sua. Intanto le tre linee guida si disegnano dal centro verso fuori animando i loro estremi. Al telefono il tocco manda l'onda, e la pressione col mouse ne manda una più piccola.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
REST | script.js | Rebuild | La scritta a riposo. |
BUSY | script.js | Rebuilding | Quello che sente chi usa un lettore di schermo mentre i tratti volano. |
DONE | script.js | Rebuilt | La scritta quando la ricostruzione è finita. |
SIZE | script.js | 11 | L'altezza delle minuscole, in pixel (le maiuscole sono alte 1,4 volte tanto). |
WEIGHT | script.js | 2.3 | Lo spessore dei tratti, in pixel. |
TRACKING | script.js | 0 | Spazio in più fra le lettere, in pixel. |
KICK | script.js | 1 | Quanto forte vengono lanciati i tratti quando la parola si smonta: 0, cadono e basta. |
GRAVITY | script.js | 2400 | La forza che tira giù i tratti, in pixel al secondo quadrato. |
BOUNCE | script.js | 0.3 | Quanto rimbalzano i tratti sul fondo: 0 per niente, 1 come la gomma. |
GRIP | script.js | 0.3 | Quanto il fondo trattiene i tratti: con più presa gli anelli rotolano, con meno le barre scivolano. |
BUILD | script.js | 1.4 | I secondi della ricostruzione, dal primo tratto che lascia il mucchio all'ultimo al suo posto. |
FLIGHT | script.js | 0.5 | I secondi del volo di un tratto dal mucchio al suo posto. |
LIFT | script.js | 9 | Quanto si alza l'arco dei voli, in pixel. |
RATTLE | script.js | 1 | Quanto tintinnano i tratti sotto il puntatore e all'entrata: 0 per niente. |
BACK | script.js | 2.6 | I secondi in cui il pulsante dice Rebuilt prima di tornare a Rebuild. |
Per l'azione che rifà qualcosa da capo in uno strumento per chi lavora col codice o coi contenuti: ricostruire un sito, rigenerare un indice, ricompilare, ripubblicare, rifare un'anteprima. Il carattere ha tutte le lettere e le cifre, quindi la stessa idea va bene per Redeploy, Regenerate, Sync now o Publish. Sta bene dove si parla di costruire: strumenti per sviluppatori, studi di tipografia, siti di architettura. È un pulsante da far vedere, uno per pagina.
La pillola è alta 60 pixel come gli altri pulsanti e larga quanto la parola più lunga; se lo schermo è stretto il carattere rimpicciolisce, e con lui lo spessore dei tratti. Il tocco manda l'onda di scosse da dove ha toccato il dito, e il clic smonta la parola lanciando i tratti lontano da quel punto.
Niente cadute, niente voli e niente scosse. Al clic la parola vecchia svanisce e la nuova compare un tratto alla volta in dissolvenza, nello stesso ordine e nello stesso tempo della ricostruzione, così si vede ancora che il lavoro procede; il ritorno è una dissolvenza incrociata. Le linee guida compaiono in dissolvenza, già lunghe, e la pillola premuta si scurisce appena invece di rimpicciolire.
GSAP 3.15.0.
Compressi con gzip, i tre file della demo pesano 15 KB; le librerie: GSAP 28 KB.
Provata il 12 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.