
Il pulsante d’invio
Pulsanti, Transizioni, SVG
NuovaGratis
L’insegna al neon di un ristorante, Book a table, è il pulsante: i tubi si accendono come i neon veri, uno per volta con uno sfarfallio irregolare, e uno di loro fatica prima di prendere. Sotto l’insegna il suo riflesso trema come sull’asfalto bagnato, rotto dalle increspature. Premuta, l’insegna si spegne morendo tubo per tubo e si riaccende in altri colori mentre il tavolo viene prenotato.
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 neon sign button</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/big-shoulders-display@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage" data-scene data-scheme="0">
<div class="piece" data-piece>
<!-- the sign is the button: glass tubes on a clear plate, lit by the script one tube at a time -->
<button class="sign" type="button" aria-label="Book a table" aria-describedby="sign-status" data-sign data-autoclic>
<span class="sign__body" data-body aria-hidden="true"></span>
</button>
<!-- the sign shining back from under it, as from wet ground: drawn by the script, row by row -->
<canvas class="mirror" data-mirror aria-hidden="true"></canvas>
<p class="status" id="sign-status" aria-live="polite">
<span data-status>Kitchen open till 11 pm</span>
</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.
18 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 al neon» da Animorio e adattala al mio sitoLe lettere sono tracciati SVG scritti a mano, un tratto continuo per tubo come si piega il vetro vero: ogni lettera intorno alla sua origine sulla linea di base, poi spostata al suo posto da una funzione che somma l’offset a tutte le coppie di coordinate. Ogni tubo ha il vetro spento con un filo di riflesso, e alle due estremità, misurate con getPointAtLength, un cappuccio scuro dove il tubo entra nella lastra verso l’elettrodo.
La luce di un tubo è due strati SVG sopra il vetro: il tubo acceso (un tratto largo e tenue, il colore, un’anima quasi bianca) e un alone sfocato con un filtro CSS. Lo sfarfallio cambia solo un numero per tubo, che a ogni fotogramma diventa l’opacità dei due strati: il browser non deve mai ridisegnare il bagliore, solo mescolarlo, e uno sfarfallio di cinquanta colpi costa come uno solo.
Per ogni tubo una timeline di GSAP fa scaldare gli elettrodi, poi da 1 a 4 lampi (per FLICKER) di durate e pause casuali, e infine lo tiene acceso. Uno dei tubi segnati come pigri, scelto a caso ma mai quello della volta prima, fa LAZY secondi di colpi deboli e fitti che si fanno più forti e più vicini verso la fine. Spegnendosi ogni tubo ha un ultimo lampo, scende con power2.out, e i suoi elettrodi restano accesi un po’ più a lungo.
Il riflesso è una tela sotto l’insegna, larga quanto lei: il suo bordo alto è l’orlo dell’acqua, e la tela è alta quanto basta per la metà bassa dell’insegna capovolta e accorciata (0,74, come vista dall’alto). I tubi accesi si ridisegnano piccoli e sfocati solo quando cambiano; poi, trenta volte al secondo, la tela copia una riga dell’insegna capovolta ogni due pixel, spostata di lato da tre onde lente, più chiara o più scura a strisce e sempre più tenue verso il fondo. Mentre l’insegna è spenta la tela non si ridisegna.
I colori stanno nel CSS in tre coppie (parole e cornice) e data-scheme sceglie quella accesa: si cambia mentre l’insegna è buia, così si riaccende direttamente nei colori nuovi, e lo script li rilegge dal CSS per il riflesso. Il pulsante è un button con aria-label Book a table; durante la prenotazione ha aria-busy e la riga sotto, aria-live, dice a che punto è.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
FLICKER | script.js | 1 | Quanto sfarfallano i tubi prima di prendere: 0 per niente, 2 tanto. |
LAZY | script.js | 1.3 | I secondi in cui il tubo pigro fatica prima di prendere. |
DIE | script.js | 0.7 | I secondi in cui l’insegna si spegne quando è premuta. |
DARK | script.js | 0.45 | I secondi di buio prima che si riaccenda nei colori successivi. |
GLOW | script.js | 1 | Quanto è forte il bagliore intorno ai tubi. |
RIPPLE | script.js | 1 | Quanto le increspature muovono il riflesso sotto l’insegna. |
BOOKED | script.js | Booked: table for two, 8:30 pm | Che cosa dice la riga sotto l’insegna a prenotazione fatta. |
DONE | script.js | 3.4 | I secondi in cui la riga dice Booked prima di tornare com’era. |
Per l’azione principale del sito di un ristorante, un cocktail bar, un locale con musica dal vivo o una sala giochi: prenota, entra, compra il biglietto. Vuole una pagina scura tutta per sé, come l’apertura del sito; in mezzo ad altri contenuti si mangerebbe tutto.
L’insegna si stringe alla larghezza dello schermo meno 32 pixel e il riflesso si ricalcola sulla misura vera, largo quanto lei e più basso in proporzione; la riga sotto si stringe un poco. Il tocco fa quello che fa il clic: l’insegna si spegne e si riaccende nei colori nuovi.
Niente sfarfallio e niente lampi: l’insegna si accende e si spegne in dissolvenze morbide, i colori cambiano lo stesso, il riflesso sta fermo senza increspature e il pulsante premuto non si stringe.
GSAP 3.15.0, Big Shoulders Display (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 9,4 KB; le librerie: GSAP 28 KB.
Provata il 4 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.