
Il suggerimento che segue
Suggerimenti, Hover, Fisica
NuovaGratis
Sotto il pulsante ci sono tre copie di lui: quando il puntatore si avvicina si aprono a scala dal lato opposto e lo seguono mentre si muove, ognuna un po’ in ritardo e un po’ più molle di quella sopra; premuto, il pulsante affonda e la pila si chiude.
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 layered button</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/bricolage-grotesque@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the buttons: each one has three copies of itself underneath. As the pointer comes near they open into a stair
on the side away from it, each copy a little later than the one above; a press pushes the button down into
them -->
<div class="buttons" data-buttons>
<button class="stack stack--colour" type="button" data-stack>
<span class="stack__layer" aria-hidden="true"></span>
<span class="stack__layer" aria-hidden="true"></span>
<span class="stack__layer" aria-hidden="true"></span>
<span class="stack__face">Let’s talk<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5 12h13M13 6.5l5.5 5.5-5.5 5.5"/></svg></span>
</button>
<button class="stack stack--paper" type="button" data-stack>
<span class="stack__layer" aria-hidden="true"></span>
<span class="stack__layer" aria-hidden="true"></span>
<span class="stack__layer" aria-hidden="true"></span>
<span class="stack__face">See the work</span>
</button>
</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.
12 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 a strati» da Animorio e adattala al mio sitoIl pulsante contiene tre span vuoti con la sua stessa forma, messi dietro di lui con z-index, e la faccia con la scritta. Il bordo nero è un box-shadow inset, così tutte le copie hanno esattamente il suo bordo.
Un numero dice quanto sono distanti le copie (REST a riposo, GAP aperte, zero premute) e un vettore la direzione, lontano dal puntatore. Ogni strato va a (posto − 0,6) volte la distanza lungo quella direzione: la faccia, posto zero, va un poco verso il puntatore, e le copie, posti da 1 a 3, verso il lato opposto.
A ogni movimento si misura la distanza fra il puntatore e il rettangolo del pulsante: da REACH pixel a zero la pila si apre con una curva morbida. La direzione è quella dal puntatore al centro del pulsante, con un po’ di basso a destra, e più il puntatore è lontano più torna al basso a destra.
Ogni strato è appeso a una molla verso il suo posto, mossa a mano sul ticker di GSAP a passi di 4 millisecondi al massimo: la rigidità della faccia è SPRING[0], ogni copia sotto è più molle di LAG, e lo smorzamento è SPRING[1]. Premendo, la molla della faccia diventa quattro volte più rigida, così il pulsante affonda subito.
Col focus dal tasto Tab la pila si apre verso il basso a destra, e Invio o Spazio danno una pressione breve da soli. Un dito apre la pila al pointerdown, dal lato opposto al tocco, e la lascia richiudere mezzo secondo dopo.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
GAP | script.js | 7 | Lo spazio fra due copie quando la pila è aperta, in pixel. |
REST | script.js | 1.6 | Lo spazio a riposo. |
REACH | script.js | 150 | Da quanto lontano il puntatore comincia ad aprire la pila, in pixel. |
SPRING | script.js | [420, 0.58] | La molla del pulsante: quanto è rigida, e quanto si calma (1 = senza oscillare). |
LAG | script.js | 0.45 | Quanto è più molle la molla di ogni copia di quella sopra. |
Per il pulsante principale di un sito con un carattere giocoso, grafico o un po’ rétro: uno studio, un portfolio, un negozio, un evento. Sta bene con colori pieni e bordi netti.
I pulsanti vanno a capo se lo schermo è stretto. Un tocco apre la pila dal lato opposto al dito, la preme e la lascia chiudere; senza puntatore la pila a riposo resta in basso a destra.
Niente molle e niente campo: la pila si apre di colpo solo col puntatore sopra il pulsante, sempre verso il basso a destra, e si chiude di colpo sotto la pressione.
GSAP 3.15.0, Bricolage Grotesque (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 4,1 KB; le librerie: GSAP 28 KB.
Provata il 3 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.