
Il pulsante elastico
Pulsanti, Hover, Testo
NuovaGratis
Nello stile minimal, su nero, solo tipografia e forma: il Hold to delete di una bozza. Mentre lo tieni premuto le lettere si svuotano una alla volta da sinistra a destra, dal pieno al contorno, e si assottigliano; la pillola si stringe, il bordo si scalda verso il vermiglio e alla fine trema. Se lasci prima, le lettere si riempiono di nuovo con una piccola molla. Se tieni fino in fondo, uno scatto: la pillola si chiude in un cerchio con una spunta disegnata, poi torna.
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 hold-to-delete button that empties its letters</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the hold-to-delete button, on black, type and shape only. While you hold it, the letters drain one by one from
left to right, from solid to outline, and grow thinner; the pill tightens a little and trembles near the end.
Let go early and the letters fill back up on a spring. Hold to the end: a snap, the pill closes into a circle
with a drawn tick, then opens back into the pill -->
<div class="hold" data-hold>
<button class="hold__btn" type="button" data-btn aria-describedby="hold-note">
<span class="hold__words" data-words aria-hidden="true"></span>
<span class="sr" data-label>Hold to delete</span>
<svg class="hold__mark" viewBox="0 0 24 24" aria-hidden="true"><path d="M5.5 12.6 10.1 17 18.6 7.4" data-mark></path></svg>
</button>
<p class="hold__note" id="hold-note" data-note>Draft · 3 photos</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.
17 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 da tenere premuto che svuota le lettere» da Animorio e adattala al mio sitoTutto dipende da p, l’avanzamento della pressione da 0 a 1: GSAP lo porta a 1 in HOLD secondi mentre tieni premuto, e a ogni fotogramma il ticker ridisegna lettere, pillola e bordo da quel numero.
Ogni lettera ha due strati: il contorno, con text-stroke e il riempimento trasparente, e la lettera piena sopra, tagliata con clip-path inset dall’alto. Per la lettera i lo svuotamento è (p × (n − 1 + SPAN) − i) / SPAN, fra 0 e 1: con SPAN maggiore di 1 più lettere scendono insieme e l’onda è morbida.
Archivo ha gli assi di peso e di larghezza: una lettera piena è a 620, vuota scende a THIN; contorno e pieno stanno nello stesso elemento, così cambiano peso insieme e restano sovrapposti.
Arrivato p a 1, la pillola si stringe in un attimo, la sua larghezza va a quella dell’altezza con power3.inOut e la scala torna con elastic.out: è un cerchio; la spunta si disegna col dashoffset. Poi la larghezza torna quella misurata e p scende a 0.
È un button vero, con l’etichetta per il lettore di schermo e una riga aria-live che annuncia Deleted; si tiene premuto anche con Spazio o Invio. Col movimento ridotto la pillola non si stringe né trema e il cerchio arriva in dissolvenza.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
LABEL | script.js | Hold to delete | Le parole sulla pillola. |
NOTE | script.js | Draft · 3 photos | La riga piccola sotto la pillola. |
NOTE_HOLD | script.js | Release to cancel | La riga piccola mentre si tiene premuto. |
NOTE_DONE | script.js | Deleted | La riga piccola a cosa fatta. |
HOLD | script.js | 1.7 | I secondi da tenere premuto. |
SPAN | script.js | 2.2 | Quante lettere si svuotano insieme: la morbidezza dell’onda. |
THIN | script.js | 220 | Il peso a cui scende una lettera vuota (piena è 620). |
SQUEEZE | script.js | 0.06 | Quanto si stringe la pillola mentre si tiene premuto. |
TREMBLE | script.js | 1.4 | Quanto trema la pillola verso la fine, in pixel. |
Per un’azione che non si torna indietro e va confermata col gesto: eliminare una bozza o delle foto, cancellare un account, inviare un pagamento, svuotare il carrello.
Si tiene premuto col dito come col mouse: il pulsante blocca lo scorrimento e il menu del tocco lungo. Le misure seguono l’altezza dello schermo; il cambio di larghezza col passaggio c’è solo col mouse.
Le lettere si svuotano e si riempiono lo stesso, ma la pillola non si stringe, non trema e non salta; la spunta arriva in dissolvenza.
GSAP 3.15.0, Archivo (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 5,5 KB; le librerie: GSAP 28 KB.
Provata il 24 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.