
Il menu che si apre dal pulsante
Menu, Transizioni, Testo
Gratis
Nello stile minimal: la notifica di un salvataggio nasce da una riga arancione sottile, che si allunga dal centro, si apre in altezza come una fessura e diventa la notifica, mentre le parole salgono riga per riga, strette e leggere, e si allargano posandosi. La riga resta sul bordo di sotto e misura il tempo per annullare; Undo la richiude nella riga e la riapre con le parole nuove, e più notifiche si impilano facendosi posto con una molla vera.
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, viewport-fit=cover">
<title>The toast from a line</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 Save draft button of a writing app and, under it, the room for its notifications. Each notification is
born from a thin line: the line stretches out from the middle, opens like a slit into the notification and
the words come up out of it one line at a time. The orange line along its bottom edge is the time left to
undo. Undo closes it back into the line and it opens again with the new words; a swipe, the cross or Esc
fold it into the line and slide it away. The notifications are made by script.js -->
<div class="desk" data-desk>
<div class="desk__head">
<button class="save" type="button" data-save data-autoclic>
<span class="save__rim" aria-hidden="true"></span>
<span class="save__label">Save draft</span>
</button>
</div>
<ol class="stack" aria-label="Notifications" data-stack></ol>
<p class="sr" role="status" aria-live="polite" aria-atomic="true" 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.
22 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 «La notifica dalla riga» da Animorio e adattala al mio sitoOgni notifica è un oggetto con cinque numeri: quanto è lunga la riga, quanto è aperta, quanto tempo resta, quanto si vedono le tacche e quanto sono tenute. GSAP anima solo quei numeri, e una funzione sola li traduce nella pagina: le tre righe sottili (il bordo di sopra, quello di sotto e il tempo arancione) si spostano e si allungano con un transform, il fondo si scopre con un clip-path in pixel che si chiude dal centro, le tacche stanno sempre alle estremità del tempo rimasto.
Ogni riga di parole ha la sua finestra con overflow nascosto; dentro, il testo sale da sotto con back.out e uno sfalsamento di STAGGER. Intanto due variabili CSS, --wd e --wg, passano da NARROW e 260 alla larghezza e al peso giusti di ogni riga (il titolo si posa largo, a 112): il font-variation-settings di Archivo le legge, e le lettere si allargano e prendono peso mentre si posano. Richiudendo vanno verso il centro, si stringono e svaniscono prima che le due righe si incontrino, così non si sovrappongono mai.
Il tempo per annullare è un tween di GSAP di un numero solo, da 1 a 0 in LIFE secondi, che si ferma sotto il puntatore, col focus dentro e col dito sopra (un insieme dei motivi per cui è tenuta: finché non è vuoto il tween resta in pausa). Undo chiude la notifica nella riga, riporta il tempo a 1 sulla riga chiusa, cambia le parole e la riapre, con HOLD secondi davanti.
Prima di ogni cambio (una notifica che arriva, una che se ne va) si misura dove sta ogni posto della lista; poi si cambia la lista, si rimisura, e ogni posto parte da dov’era e va al suo posto nuovo. L’andatura è una molla smorzata risolta esattamente, 1 − e^(−ζωt)(cos ωd t + ζω/ωd sin ωd t), passata a GSAP come ease: con ζω fisso la molla si è sempre fermata alla fine del tween, e con DAMPING 0,8 va oltre di un pixel e torna.
Al pointerdown la notifica cattura il puntatore; dopo 6 pixel si sceglie la direzione: di lato segue il dito, in verticale lascia scorrere la pagina (touch-action: pan-y). Lasciata oltre 110 pixel o lanciata veloce si ripiega e scivola via, se no torna con la molla. Esc manda via quella col focus o la più nuova. Il clic che fa l’anteprima da sola (detail 0 e nessun tasto premuto) fa invece un giro intero in una timeline di GSAP: tre salvataggi, Undo sulla più nuova, una mandata via di lato, la più vecchia che finisce il tempo.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
LIFE | script.js | 5 | I secondi per annullare: la riga arancione sotto la notifica (si ferma sotto il puntatore). |
HOLD | script.js | 1.8 | I secondi in cui resta la notifica dopo Undo. |
DRAW | script.js | 0.42 | I secondi in cui la riga si allunga dal centro. |
OPEN | script.js | 0.55 | I secondi in cui la riga si apre nella notifica. |
STAGGER | script.js | 0.08 | I secondi fra una riga di parole che sale e la successiva. |
DAMPING | script.js | 0.8 | La molla della pila che fa posto: 1 senza andare oltre, 0,4 qualche rimbalzo. |
NARROW | script.js | 66 | La larghezza delle lettere quando salgono dalla riga (62 la più stretta, 100 normale). |
MAX | script.js | 3 | Quante notifiche al massimo: una in più chiude la più vecchia. |
FIRST | script.js | 0.7 | I secondi prima che arrivi da sola una prima notifica (0: nessuna). |
TITLE | script.js | Draft saved | Il titolo della notifica. |
UNDONE | script.js | Save undone | Il titolo dopo Undo. |
DOC | script.js | Slow mornings | Il nome della bozza. |
WORDS | script.js | 1204 | Le parole della bozza all’inizio. |
Per un’azione che si può ancora disfare per qualche secondo: un salvataggio, un archivio, un’email spostata, una modifica in un’app di scrittura o in un pannello. La riga che misura il tempo dice quanto resta senza numeri, e la nascita dalla riga sta bene nelle interfacce sobrie, tipografiche, su fondo scuro.
La colonna prende la larghezza dello schermo meno 32 pixel (358 a 390). Le notifiche si mandano via trascinandole di lato col dito, mentre in verticale la pagina scorre; il dito sopra ferma il tempo, Undo è alto 30 pixel e la croce ha un’area di tocco più grande di quella disegnata.
Niente riga che si allunga e niente fessura che si apre: la notifica compare in dissolvenza già aperta, le parole in dissolvenza al loro posto, e la pila cambia di colpo senza molla. La riga del tempo continua a ritirarsi, perché è un’informazione; Undo cambia le parole in dissolvenza e le notifiche se ne vanno sbiadendo.
GSAP 3.15.0, Archivo (font variabile, assi wdth e wght) 5.3.0.
Compressi con gzip, i tre file della demo pesano 9,3 KB; le librerie: GSAP 28 KB.
Provata il 16 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.