
Il menu col bruco
Menu, Hover, Transizioni
NuovaGratis
Due mesi affiancati per scegliere l’arrivo e la partenza, come nella pagina delle prenotazioni di una casa vacanze: i due giorni scattano in un disco nero, il soggiorno si riempie un giorno dopo l’altro come un’onda e sotto le notti e il totale contano fino ai loro numeri.
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 booking calendar</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/figtree@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the picker: an arrival and a departure. The stay fills up day after day like a wave, the booked nights are
struck through, and the nights and the total count up to their new numbers. The months are drawn by the script -->
<div class="picker" data-picker>
<div class="picker__head">
<button class="picker__nav" type="button" aria-label="Previous month" data-prev><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14.5 6 8.5 12l6 6"/></svg></button>
<button class="picker__nav" type="button" aria-label="Next month" data-next><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M9.5 6l6 6-6 6"/></svg></button>
</div>
<div class="picker__months" data-months></div>
<div class="picker__foot">
<p class="picker__sum" aria-hidden="true" data-sum></p>
<button class="picker__clear" type="button" data-clear>Clear dates</button>
</div>
<p class="sr" role="status" aria-live="polite" data-said></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.
16 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 calendario delle prenotazioni» da Animorio e adattala al mio sitoLo script disegna ogni mese: il titolo, le iniziali dei giorni da WEEK_START in poi e sei settimane di pulsanti, così tutti i mesi sono alti uguali. Ogni giorno ha tre strati: la fascia del soggiorno, il disco e il numero col prezzo. Le notti prenotate (circa una su sette) e i prezzi sono inventati da un numero ricavato dalla data, quindi sono sempre gli stessi; il prezzo parte da PRICE, uno per i giorni feriali e uno per il venerdì e il sabato, più 0, 10 o 20 euro.
Dentro il soggiorno la fascia di un giorno è larga quanto la sua cella; quella dell’arrivo parte dal suo centro e quella della partenza finisce al suo centro, sotto i dischi. È arrotondata nella prima e nell’ultima colonna e nel primo e nell’ultimo giorno del mese, così ogni settimana del soggiorno si legge come una pillola.
L’onda è la fascia di ogni giorno che cresce dal suo lato sinistro (scaleX da 0 a 1) in WAVE[0] secondi, WAVE[1] secondi dopo quella prima. I dischi scattano da 0,4 a 1 con back.out(POP). Le notti e il totale sono due numeri che GSAP porta ai loro valori nuovi in COUNT secondi, riscrivendoli a ogni fotogramma.
Cambiando mese, il mese che entra si aggiunge in fondo alla fila (in testa, tornando indietro), la finestra resta larga com’era e la fila scorre di un mese in SLIDE secondi con power3.inOut. Alla fine il mese uscito si toglie e la fila torna a zero: non si vede niente, perché tutto si è spostato esattamente di un mese.
Un solo giorno della griglia prende il tasto Tab: le frecce si muovono fra i giorni, Home e End vanno all’inizio e alla fine della settimana, Pagina su e Pagina giù cambiano mese, Invio sceglie. Con la tastiera la fascia chiara segue il focus, col mouse il puntatore; con un dito non c’è, e si tocca l’arrivo e poi la partenza.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
WEEK_START | script.js | 1 | Il primo giorno della settimana: 1 il lunedì, 0 la domenica. |
PRICE | script.js | [120, 150] | Il prezzo di una notte, in euro: nei giorni feriali, e il venerdì e il sabato. |
WAVE | script.js | [0.35, 0.018] | L’onda del soggiorno: i secondi di ogni giorno, e il tempo fra un giorno e il successivo. |
POP | script.js | 2.6 | Il rimbalzo di un giorno scelto. |
SLIDE | script.js | 0.55 | I secondi in cui la fila dei mesi scorre di un mese. |
COUNT | script.js | 0.7 | I secondi in cui le notti e il totale arrivano ai loro numeri nuovi. |
Per la pagina delle prenotazioni di una casa vacanze, di un agriturismo, di un albergo o di un noleggio: ovunque si scelgano due date e contino le notti. I prezzi e le notti prenotate vanno presi dal tuo sistema al posto di quelli inventati.
Sotto i 760 pixel resta un mese solo e le celle si stringono per stare nella larghezza dello schermo. I tocchi fanno come i clic; la fascia chiara sotto il puntatore non c’è, ma si sceglie allo stesso modo: un tocco per l’arrivo, uno per la partenza.
Niente onda, niente rimbalzi e niente carosello: la fascia compare in dissolvenza e i dischi di colpo, i mesi cambiano di colpo, le notti e il totale vanno subito ai loro numeri e all’apertura la scheda è già al suo posto.
GSAP 3.15.0, Figtree (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 8,4 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.