
Il vaso al sole
Card, 3D, Fisica, Hover, Transizioni
NuovaGratis
Il pulsante Add to wishlist di un negozio, con un soffione vero nella punta tonda della pillola, al posto dell'icona: centoventi semi messi sulla sfera per fillotassi, ognuno col suo achenio, il becco sottile e il pappo a ombrellino. Il puntatore è una brezza che li fa piegare e tremare, una passata veloce ne stacca uno o due. Al clic una folata li porta via tutti, in alto a destra, e ogni seme vola come un piccolo paracadute sopra tutta la pagina; resta il ricettacolo nudo sul suo stelo, la scritta dice Saved to wishlist con una spunta che si disegna, e poco dopo il soffione rinasce.
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 dandelion button</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/newsreader@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the dandelion button: the Add to wishlist button of a shop, with a dandelion clock at its right end where an
icon would be. The seed head is drawn on a canvas, seed by seed: the pointer is a breeze that makes the seeds
lean and tremble, and the click is a gust that blows them all away, up and to the right, each one flying as a
little parachute on a second canvas over the whole page. The words say Saved to wishlist, and a moment later
the head grows its seeds again -->
<div class="wish" data-wish>
<button class="wish__btn" type="button" data-btn data-autoclic>
<span class="wish__label" data-label>
<span class="wish__face" data-face="rest"><span data-rest-text>Add to wishlist</span></span>
<span class="wish__face" data-face="done" aria-hidden="true">
<svg class="wish__tick" viewBox="0 0 20 20" aria-hidden="true"><path d="M4.4 10.6l3.6 3.5 7.6-8.2" pathLength="1" data-tick/></svg>
<span data-done-text>Saved to wishlist</span>
</span>
</span>
<canvas class="wish__head" aria-hidden="true" data-head></canvas>
</button>
<p class="sr" aria-live="polite" data-live></p>
</div>
<canvas class="wish__air" aria-hidden="true" data-air></canvas>
</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.
20 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 del soffione» da Animorio e adattala al mio sitoI SEEDS semi stanno su una sfera, a passi d'area uguale dalla cima fino a 146 gradi (sotto c'è lo stelo) e girati ognuno dal precedente dell'angolo aureo, 137,5 gradi: la spirale del girasole, su una palla. L'asse del fiore guarda in su, un poco a destra e verso l'occhio, così la testa si vede un po' dall'alto. Ogni seme è lungo il suo raggio: l'achenio dal ricettacolo (raggio 4,4) per 4 pixel, il becco per altri 10,2, e lì il pappo con 14 setole di 8,6 pixel. La luce di un seme viene da quanto è davanti e da quanto guarda la lampada in alto a sinistra, in 24 livelli di colore fatti una volta; si disegnano prima i semi di dietro, poi lo stelo e il ricettacolo, poi quelli davanti.
Le setole sono vettori nello spazio: cos α · asse + sin α · (cos φ · e1 + sin φ · e2), con e1 ed e2 perpendicolari all'asse del seme, α l'apertura (76 gradi) e φ che gira intorno all'asse. Ogni setola è una curva di secondo grado che parte un po' più piatta e alla punta gira in su, come le stecche di un ombrellino; sullo schermo se ne prende la proiezione. Così un pappo di fronte è una stella, uno di profilo un ventaglio, e la sagoma della palla viene da sola. Gli stessi calcoli disegnano i semi in volo, con l'asse e la rotazione che cambiano a ogni fotogramma.
Ogni seme segue su una molla sua (pulsazione 15, smorzamento 0,32, quindi trema) il punto dove l'aria lo piegherebbe: un respiro di rumore di Perlin lento a riposo; col puntatore sopra una spinta lontano da lui, fino a 4,6 pixel e più forte entro 24 pixel, più un tremito di rumore veloce. Il becco si piega con una curva e il pappo segue. Se il puntatore passa a più di 700 pixel al secondo entro 22 pixel dal centro della testa, il seme del lato davanti più vicino alla sua traccia si stacca (due sopra i 1500), verso dove andava il puntatore ma girato in alto a destra, e ricresce dopo 2,4-4 secondi; ne mancano al massimo dieci.
Il vento soffia in alto a destra, più ripido dove a destra c'è poco spazio (fra 32 e 78 gradi). Ogni seme ha la sua ora di partenza secondo la sua posizione lungo il vento: dal lato sopravvento a quello sottovento in 0,7 / √GUST secondi, e nei 0,2 secondi prima si piega nel vento. Quando parte passa dal canvas della testa a un canvas fisso grande quanto la finestra, dallo stesso punto e con lo stesso asse, e prende la sua fetta del ventaglio della folata: un seme sul lato alto della palla va più in su, fino a mezzo radiante, uno sul lato basso più piatto, fino a tre decimi: la nuvola sale sempre.
In aria un seme è un corpo con una resistenza forte: a = DRAG · (aria − v) + peso, quindi raggiunge presto il vento e cade piano (36 / DRAG pixel al secondo). L'aria è la folata (250 · GUST pixel al secondo al culmine, che sale in 0,07 secondi e cala in 1,05, presa da ogni seme in misura sua), una brezza costante e un poco d'aria che sale, i mulinelli del rotore di un campo di rumore (due ottave, che non ammucchiano mai i semi) e un tremolio proprio di ogni pappo. Il pappo si gira su una molla verso l'aria che lo investe, si inclina verso l'occhio e via, ruota, e una profondità lo fa più grande e chiaro o più piccolo; svanisce con l'età e con la distanza. Passi di 1/120 di secondo, fotogramma limitato a 1/30, e si cancella solo il rettangolo disegnato prima.
Riposo, folata, testa nuda, ricrescita. Il ricettacolo nudo è una cupola con le fossette in spirale e le brattee piegate in giù; lo stelo e il ricettacolo si perdono nella lanugine quanto più la testa è piena. Dopo HOLD secondi i semi rispuntano in ordine di indice nell'arco di 1,1 secondi, ognuno su una molla che va oltre l'uno (pulsazione 14, smorzamento 0,42): il becco esce dal ricettacolo col pappo chiuso e lo apre di scatto. Il pulsante è aria-disabled e ignora i clic dalla folata alla fine della ricrescita; una zona aria-live dice Saved to wishlist. A riposo, se respira solo, la testa si ridisegna a metà dei fotogrammi; fuori dallo schermo si ferma.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
LABEL | script.js | Add to wishlist | La scritta a riposo. Se è troppo lunga per lo spazio a sinistra del soffione, il carattere si rimpicciolisce. |
DONE | script.js | Saved to wishlist | La scritta quando i semi sono volati via, con la spunta; è anche quello che dice la zona aria-live. |
SEEDS | script.js | 120 | Quanti semi ha il soffione: meno, la palla si dirada e si vedono le stelle dei singoli pappi; di più, è più piena. |
GUST | script.js | 1 | Quanto soffia il clic: 0,5 un sospiro, i semi si staccano piano e salgono adagio; 2 una raffica che li porta via in un attimo. |
DRAG | script.js | 3.2 | Quanto l'aria trattiene un seme: più alto, i semi cadono più piano e seguono il vento più da vicino; più basso, sono più pesanti e tengono lo slancio. |
TURBULENCE | script.js | 1 | Quanto i mulinelli dell'aria fanno girare e sparpagliare i semi in volo: 0, una corrente liscia. |
BREEZE | script.js | 1 | Quanto l'aria muove i semi sulla testa, a riposo e sotto il puntatore: 0 stanno fermi (e il soffione non si ridisegna finché non succede qualcosa), e il puntatore non ne stacca nessuno. |
HOLD | script.js | 2.6 | I secondi in cui la testa resta nuda, con Saved to wishlist, prima che i semi rispuntino. |
Per l'azione che mette da parte un desiderio: la lista dei desideri di un negozio, i preferiti, il salvare per dopo, una lista nozze o dei regali, un biglietto d'auguri. Il soffione sta bene nei negozi di fiori, di piante e di cose per la casa, nella cosmetica naturale, nei siti per bambini e per chi fa regali. È un pulsante da far vedere, uno per pagina, su un fondo scuro; i semi volano sopra tutta la pagina, quindi in alto a destra serve un po' d'aria libera.
La pillola è alta 60 pixel e larga 272, o lo schermo meno 32; il soffione ha sempre la stessa misura e la scritta, se non ci sta, si rimpicciolisce. Il dito appoggiato è la brezza (i semi si piegano lontano da lui) e il tocco la folata. Con poco spazio a destra il vento soffia più ripido, fino a 78 gradi, e i semi salgono verso l'alto; escono dai lati dello schermo senza mai farlo scorrere, perché volano su un canvas fisso grande quanto la finestra.
Niente volo, niente respiro, niente brezza né tremito e nessuna crescita all'arrivo. Al clic i semi svaniscono al loro posto in sei decimi di secondo e resta il ricettacolo nudo; Saved to wishlist arriva in dissolvenza con la spunta già disegnata. Dopo HOLD secondi i semi tornano in dissolvenza e la scritta torna Add to wishlist. Premuta, la pillola si schiarisce appena invece di rimpicciolire.
GSAP 3.15.0, Newsreader (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 16 KB; le librerie: GSAP 28 KB.
Provata il 7 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.