
Il pulsante a strati
Pulsanti, Hover, Fisica
Gratis
Il pulsante Upgrade plan di un'app, con una crisalide color giada appesa a un rametto nella punta tonda della pillola. Il clic è il passaggio al piano Pro: l'involucro si scurisce e diventa trasparente finché dentro si vedono le ali blu ripiegate, si spacca in fondo, e una farfalla esce e resta appesa sotto il guscio vuoto con le ali piccole, bagnate e accartocciate. Le gonfia in tre spinte, le asciuga con due battiti lenti e vola fuori dalla pillola su una curva un po' incerta, fino a posarsi sul suo bordo di sopra, dove apre e chiude le ali. Il blu non è un colore dipinto: lo script calcola a ogni angolo la luce riflessa dai sottili strati delle scaglie, come nelle vere morpho, quindi le ali lampeggiano azzurre di fronte e diventano viola scuro quando si inclinano.
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 chrysalis button</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/mona-sans@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the chrysalis button: the Upgrade plan button of an app, with a jade chrysalis hanging from a twig in the round
left end of the pill. A click is the upgrade: the case clears and shows the blue wings folded inside, splits,
and a butterfly climbs out, pumps its wings to full size, dries them and flies out of the pill to settle on its
top edge, opening and closing its wings. Their blue is not a paint: it is worked out from the light reflected
by the thin layers in the scales, so it flashes and turns violet as the wings tilt -->
<div class="chry" data-chrysalis>
<button class="chry__btn" type="button" data-btn data-autoclic>
<span class="chry__fill" aria-hidden="true"></span>
<span class="chry__well" aria-hidden="true"></span>
<span class="chry__faces">
<span class="chry__face" data-face="rest">
<span class="chry__word" data-wide="Upgrade plan" data-rest-text>Upgrade plan</span>
</span>
<span class="chry__face chry__face--busy" data-face="busy" aria-hidden="true">
<span class="chry__shine" data-busy-text>Upgrading…</span>
</span>
<span class="chry__face chry__face--done" data-face="done" aria-hidden="true">
<span class="chry__done" data-done-text>Welcome to Pro</span>
</span>
</span>
</button>
<canvas class="chry__air" aria-hidden="true" data-air></canvas>
<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.
23 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 crisalide» da Animorio e adattala al mio sitoLe scaglie delle morpho sono pile di strati sottili di chitina e aria, e il loro blu è la luce riflessa da quegli strati quando le onde vanno in fase. Per ogni grado di inclinazione da 0 a 90 lo script calcola dove cade il picco del primo ordine, due volte lo spessore ottico di una coppia di strati (70 nanometri di chitina con indice 1,56, più l'intercapedine d'aria LAYER), ciascuno col suo coseno interno dato dalla legge di Snell; una banda gaussiana intorno al picco, più larga quando la luce entra di sbieco, è lo spettro riflesso. Lo spettro si pesa con le curve del colore dell'occhio (l'approssimazione a gaussiane di Wyman, Sloan e Shirley delle CIE 1931), il risultato XYZ diventa sRGB con la sua curva, e i colori fuori dallo schermo si avvicinano al grigio della stessa luminosità invece di essere tagliati. Ne esce una tabella di 91 colori: azzurro di fronte, blu profondo, viola, quasi nero sul taglio. Con LAYER a 160 la stessa fisica dà il verde, a 190 l'oro.
Ogni ala è una forma di tre curve di Bézier misurata in lunghezze dell'ala anteriore, dalla radice sul torace. La farfalla si vede dall'alto: un'ala alzata di φ gradi verso l'occhio si accorcia di cos φ in larghezza, e il suo colore è quello della tabella all'angolo φ, più o meno l'inclinazione della luce (con segni opposti per le due ali, così una lampeggia mentre l'altra si spegne). La stessa forma, rimpicciolita verso la radice, è la parte blu dentro il bordo nero; un gradiente lungo l'ala usa tre angoli un po' diversi, perché l'ala è curva. Sopra, le venature e le righe sottili delle scaglie. Per l'ala appena uscita, ogni punto della forma riceve una spinta fissa a caso, moltiplicata per crumple, e un velo grigio, moltiplicato per wet: le due variabili scendono a zero mentre la grandezza sale in tre spinte.
La strada è una spline di Catmull-Rom per sei punti, dal guscio fin sopra la pillola e giù sul bordo, percorsa a velocità costante con una tabella delle lunghezze (240 campioni e una ricerca binaria). GSAP porta il punto lungo la strada con sine.inOut; sopra c'è uno sbandamento di traverso, la somma di due seni che si spegne ai due capi, e a ogni colpo d'ala un piccolo sollevamento. La testa segue la tangente della strada, con un'oscillazione a metà del ritmo delle ali, e all'inizio e alla fine gira dolcemente verso l'alto, per staccarsi e posarsi dritta. Le ali battono a BEATS colpi al secondo fra -24 e 84 gradi, e il battito si mescola con la posa ferma attraverso fly.amt.
La crisalide è una goccia di quattro curve con un gradiente dalla luce in alto a sinistra, la riga d'oro e un riflesso; si scurisce verso il colore del pozzetto mentre una forma blu ritagliata dentro di lei diventa visibile, poi si incrocia col guscio vuoto, chiaro e aperto in fondo. Gira sul suo gancio con una molla smorzata (1,5 oscillazioni al secondo), spinta dal puntatore e dagli scatti della timeline. Posata, la farfalla apre e chiude le ali con un inviluppo che si smorza in un secondo e mezzo, e la luce segue il puntatore con un ritardo esponenziale, più forte quanto più è vicino. Il passo di tempo è limitato a 1/30 di secondo e diviso in passi di 1/240.
Una timeline GSAP fa tutto: crisalide che si schiarisce (un secondo), spacco, uscita, tre spinte, due battiti, volo di 1,7 secondi, atterraggio; PACE ne cambia la velocità con timeScale. Il pulsante è un button vero: aria-disabled mentre la farfalla nasce e mentre vola via, una zona aria-live dice Upgrading your plan… e Welcome to Pro., e il clic successivo è accettato solo quando le ali si sono calmate (6,2 secondi), così il clic dell'anteprima ogni 2,8 secondi lascia la farfalla posata per un giro intero. Il disegno si ferma quando nessun valore cambia: un'impronta di tutte le variabili decide se ridisegnare, e il canvas copre la pillola e l'aria sopra di lei senza mai prendere il puntatore.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
LABEL | script.js | Upgrade plan | La scritta a riposo. Se una delle tre scritte è troppo lunga per lo spazio, il carattere si rimpicciolisce. |
BUSY | script.js | Upgrading… | La scritta mentre la farfalla esce e vola. |
DONE | script.js | Welcome to Pro | La scritta quando la farfalla si è posata; la dice anche la zona aria-live. |
PACE | script.js | 1 | Il passo di tutta la nascita: 2 ci mette il doppio, 0,5 la metà. |
LAYER | script.js | 130 | Lo spessore dell'aria fra gli strati delle scaglie, in nanometri: 130 è il blu delle morpho, 100 viola, 160 verde, 190 oro. Il colore delle ali viene da qui. |
BEATS | script.js | 7 | I colpi d'ala al secondo in volo. |
SIZE | script.js | 1 | La grandezza della farfalla. |
TWITCH | script.js | 1 | Quanto scatta la crisalide sotto il puntatore e mentre si apre. 0 resta ferma. |
Per il passaggio a un piano a pagamento in un'app o in un SaaS: Upgrade plan, Go Pro, Unlock premium, o la fine di una prova gratuita. Va bene anche per un'azione che trasforma qualcosa (pubblica, attiva, porta in produzione) in un prodotto con un tono caldo. Il passaggio è simulato: in un'app vera il clic apre il pagamento o chiama il server, e lo stato fatto aspetta la sua risposta; il secondo clic che fa volare via la farfalla serve alla demo, in un'app porterebbe alla pagina del piano.
La pillola è larga circa 210 pixel e la farfalla vola sopra di lei per una quarantina di pixel ai lati: a 390 pixel tutto sta dentro, e se una scritta è più lunga dello spazio il carattere si rimpicciolisce. Il tocco fa scattare la crisalide, schiaccia il fondo e fa nascere la farfalla; il dito al posto del puntatore sposta la luce sulle ali.
Niente scatti, niente volo e niente battiti: al clic la crisalide si scurisce e diventa il guscio vuoto in dissolvenza, e la farfalla compare già posata sul bordo, con le ali aperte, in dissolvenza; Upgrading… e Welcome to Pro arrivano in dissolvenza. La pillola non si gonfia (sotto il mouse il fondo si schiarisce appena). Un altro clic fa sparire la farfalla e rimette la crisalide, sempre in dissolvenza.
GSAP 3.15.0, Mona Sans (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 15 KB; le librerie: GSAP 28 KB.
Provata il 13 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.