
Il menu che si apre dal pulsante
Menu, Transizioni, Testo
Gratis
Una chat con Nora, che affitta una casa sul lago: il messaggio inviato vola da dove è stato scritto, la casella o il suggerimento toccato, fino alla sua nuvoletta mentre gli altri salgono; poi una nuvoletta piccola mostra Nora che scrive, con una riga che si scrive da sola, e si allarga nella sua risposta.
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 chat that answers</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/mulish@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the chat that answers: a message flies from where it was written into its bubble while the others move up,
and the answer grows out of the little bubble that shows the other person writing -->
<section class="chat" aria-label="Chat with Nora" data-chat data-autoclic>
<header class="chat__head">
<span class="chat__avatar" aria-hidden="true">N</span>
<div>
<h2 class="chat__name">Nora</h2>
<p class="chat__where">Casa del Lago · usually replies in minutes</p>
</div>
</header>
<div class="chat__thread" data-scroll>
<div class="chat__log" role="log" aria-live="polite" data-log></div>
</div>
<div class="chat__quick" role="group" aria-label="Suggested messages" data-quick></div>
<form class="chat__composer" data-form>
<label class="sr" for="chat-input">Message Nora</label>
<input class="chat__input" id="chat-input" type="text" placeholder="Message" autocomplete="off" autocorrect="off" enterkeyhint="send" maxlength="160" data-input>
<button class="chat__send" type="submit" aria-label="Send" disabled data-send>
<svg viewBox="0 0 24 24" aria-hidden="true"><path d="M12 19V5.5M6.5 11 12 5.5l5.5 5.5"/></svg>
</button>
</form>
</section>
</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.
24 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 chat che risponde» da Animorio e adattala al mio sitoIl messaggio nuovo entra subito al suo posto, nascosto; una sua copia, sopra tutto (la conversazione la taglierebbe), parte da dove erano le parole e va verso la nuvoletta vera: x e y con due ease diverse (power2.inOut e power3.out) disegnano una curva, il fondo passa da trasparente al blu, e a ogni fotogramma la copia rimisura la nuvoletta, così la raggiunge anche se nel frattempo la conversazione si sposta. All’arrivo la copia sparisce e compare la nuvoletta vera.
Prima di ogni messaggio nuovo si misura dove sta ogni messaggio; dopo (la conversazione è scesa fino in fondo), ognuno parte da dove era e torna a zero in 0,45 secondi con power3.out. I messaggi più vecchi, fuori vista, se ne vanno quando sono più di quattordici.
Dopo WAIT[0] secondi compare la nuvoletta piccola (scale da 0,5 con back.out) con una riga a onde: stroke-dasharray lungo quanto la riga e stroke-dashoffset da +L a −L, così si scrive e si cancella andando avanti, in loop. Dopo WAIT[1] secondi la nuvoletta lascia il posto alla risposta.
La risposta entra al suo posto ritagliata (clip-path inset) alla misura della nuvoletta piccola, dall’angolo che hanno in comune; il ritaglio si apre in GROW secondi, coi numeri su un oggetto a parte scritti a ogni fotogramma (un clip-path animato come testo salterebbe), mentre le parole entrano una dopo l’altra. Le risposte sono quelle dei suggerimenti (ANSWERS); a tutto il resto Nora risponde OTHER.
La conversazione è una regione role log, che i lettori di schermo leggono man mano, e ogni messaggio comincia con chi parla (You o Nora, nascosto alla vista); la nuvoletta di chi scrive e lo stato sono aria-hidden. I suggerimenti sono pulsanti, la casella è un form vero (Invio manda), e se un suggerimento usato aveva la focalizzazione, questa passa al primo rimasto. Un clic da script (l’anteprima della libreria) è un ospite finto: scrive un messaggio lettera per lettera e lo manda, oppure tocca un suggerimento, e aspetta la risposta; non prende mai la focalizzazione.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
FLIGHT | script.js | 0.5 | I secondi del volo di un messaggio da dove è scritto al suo posto. |
WAIT | script.js | [0.5, 1.4] | I secondi prima che Nora cominci a scrivere, e per quanto scrive. |
GROW | script.js | 0.45 | I secondi in cui la nuvoletta piccola si allarga nella risposta. |
ANSWERS | script.js | [['We arrive around 6', 'Perfect, I’ll leave the key in the box by the door.'], …] | I suggerimenti e le risposte di Nora. |
OTHER | script.js | 'Noted, thanks! See you this evening.' | La risposta di Nora a tutto il resto. |
Per l’assistenza di un sito, i messaggi fra un ospite e chi lo ospita, una chat di supporto, un assistente con le risposte pronte, la demo di un’app di messaggi.
Il riquadro prende la larghezza dello schermo e la fila dei suggerimenti scorre di lato col dito; la casella è a 16 pixel, così Safari su iPhone non ingrandisce la pagina, e la tastiera mostra il tasto per inviare (enterkeyhint send).
I messaggi compaiono subito al loro posto, senza volo, e gli altri si spostano senza scivolare; la nuvoletta di chi scrive resta ferma, la risposta compare intera e la seconda spunta compare senza disegnarsi.
GSAP 3.15.0, Mulish (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 7,2 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.