
Il pulsante elastico
Pulsanti, Hover, Testo
NuovaGratis
Un suggerimento (tooltip) nello stile minimal, su bianco: in una frase tre parole hanno sotto una riga tratteggiata, e fermandosi su una da lei si srotola un nastrino di carta stretto, col suo piccolo rotolo che corre avanti girando e le parole che compaiono mentre la carta si apre. Passando a un’altra parola il nastrino si riavvolge e si srotola lì.
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 tooltip that unrolls from the word</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/newsreader@5.3.0/index.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/instrument-sans@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the tooltip that unrolls from the word: three words of a coffee roaster's note are dotted underneath; resting
on one, a narrow strip of paper unrolls from the word, its little roll running ahead and the words of the
tooltip showing as the paper opens. Moving to another word, the strip rolls itself back up and unrolls there -->
<div class="note" data-note data-autoclic>
<p class="note__label">Mosslane Coffee</p>
<p class="note__text" data-text>
This week’s beans are <button class="term" type="button" aria-describedby="tip-washed" data-term>washed</button>,
<button class="term" type="button" aria-describedby="tip-rested" data-term>rested</button> for ten days
and best as a slow <button class="term" type="button" aria-describedby="tip-pour" data-term>pour-over</button>.
</p>
<p class="note__hint">Rest on an underlined word</p>
<div class="ribbon" data-ribbon aria-hidden="true">
<span class="ribbon__tip" data-tipmark></span>
<span class="ribbon__strip" data-strip>
<span class="ribbon__words" data-words></span>
</span>
<span class="ribbon__curl" data-curl></span>
<span class="ribbon__roll" data-roll></span>
</div>
<span class="tip-text" role="tooltip" id="tip-washed" data-tip>The fruit is washed off before the beans dry.</span>
<span class="tip-text" role="tooltip" id="tip-rested" data-tip>Left to breathe after roasting, for a sweeter cup.</span>
<span class="tip-text" role="tooltip" id="tip-pour" data-tip>Hot water poured by hand over a paper filter.</span>
</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.
27 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 suggerimento che si srotola dalla parola» da Animorio e adattala al mio sitoC’è un solo nastrino per tutte le parole: la striscia di carta, il rotolo, l’ombra del rotolo e la punta. Per ogni parola lo script ci mette dentro il testo, misura quanto è largo e lo sposta sopra la parola, un po’ a sinistra, senza farlo uscire dal riquadro della nota.
Un numero da 0 a 1 dice quanto è aperta la carta: la striscia è larga quella parte della sua misura, il rotolo sta sul suo bordo destro e la sua ombra un po’ più indietro. GSAP porta il numero a 1 con back.out, così il rotolo va oltre e torna; le spire del rotolo scorrono con la strada fatta, e il rotolo è un poco più grosso quando ha ancora carta addosso.
Il testo sta fermo dentro la striscia, che ha overflow hidden: allargandosi, la striscia lo scopre da sinistra. Il testo vero per chi usa un lettore di schermo è nell’elemento con role tooltip, collegato alla parola con aria-describedby.
La parola è un pulsante che sembra testo. La riga tratteggiata è un background a strisce di 3 pixel; quando il suggerimento è fuori diventa una riga piena rossa che cresce con background-size, e la parola si alza di LIFT pixel con una molla: niente cambio di peso, che allargherebbe la parola e sposterebbe la riga.
La prima volta il suggerimento aspetta DELAY secondi; se uno è appena uscito il prossimo parte subito. Cambiando parola, il nastrino si riavvolge in REWIND secondi e solo dopo si srotola sulla nuova. Coi tasti compare col focus, Esc lo rimette via; al telefono un tocco lo apre e lo chiude.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
DELAY | script.js | 0.35 | I secondi in cui il puntatore resta su una parola prima del primo suggerimento. |
UNROLL | script.js | 0.8 | I secondi che il nastrino ci mette a srotolarsi. |
REWIND | script.js | 0.32 | I secondi che ci mette a riavvolgersi. |
OVERSHOOT | script.js | 1.3 | Quanto il rotolo va oltre la fine prima di tornare (0 si ferma di colpo). |
LIFT | script.js | 1.5 | Di quanti pixel si alza la parola mentre il suo suggerimento è fuori. |
GAP | script.js | 10 | Lo spazio fra la parola e il nastrino, in pixel. |
Per i glossari dentro un testo: le parole del caffè o del vino sulla scheda di un prodotto, i termini di una documentazione, le voci di un contratto, le parole difficili di una lezione. Dove una parola ha bisogno di una riga di spiegazione senza far lasciare la pagina.
La frase si stringe con la casella e va su più righe; il nastrino resta dentro il riquadro della nota e si apre col tocco su una parola, un altro tocco o un tocco altrove lo chiude.
Niente rotolo che corre: il nastrino compare già aperto con una dissolvenza e la parola resta ferma.
GSAP 3.15.0, Newsreader (font variabile) 5.3.0, Instrument Sans (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 5,6 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.