
Il vaso al sole
Card, 3D, Fisica, Hover, Transizioni
NuovaGratis
Il menu di un festival nel bosco come un palo con le frecce di legno dipinte: chiuso è la tavola di quercia in cima al palo, con Menu bruciato nel legno. Premuta, la tavola gira sul palo e dietro dice Close, il palo scivola giù, rimbalza e fa ondeggiare il cartello, e ogni freccia, quando il palo la raggiunge, viene lanciata fuori a sinistra o a destra e oscilla sulla sua molla, passando l'oscillazione alle altre. Il puntatore che sfiora una freccia la spinge indietro e la fa dondolare, con le lettere che saltellano; quella scelta si ribalta sul suo lato lungo.
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 signpost menu</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/shantell-sans@5.3.0/full.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage">
<!-- the menu of a summer festival in the woods as a wooden signpost. Closed, the button is the oak board nailed to
the top of the post. Pressed, the board spins round on the post and reads Close, the post slides down out of
it, and as its end goes past each arrow the arrow is flung out round the post, left and right in turn, and
wobbles on its spring; the wobble runs up and down the post into the other arrows. The pointer brushing an
arrow pushes it back and lets it swing; a chosen arrow flips over on its long side. The boards are flat
elements turned in 3D by the script, with their thickness made of thin slices -->
<nav class="sign" aria-label="Festival" data-sign>
<div class="sign__frame" data-frame>
<div class="sign__scene" data-scene>
<span class="pole" aria-hidden="true" data-pole><span class="pole__wood"></span></span>
<svg class="cap" viewBox="0 0 34 14" aria-hidden="true"><path d="M3 13 L17 1 L31 13 Z" fill="var(--cap)"/><path d="M17 1 L31 13 L17 13 Z" fill="var(--cap-dark)"/><rect x="1" y="12" width="32" height="2" rx="1" fill="var(--cap-dark)"/></svg>
<button class="board" type="button" aria-expanded="false" aria-controls="sign-menu" data-board data-autoclic>
<span class="board__body" aria-hidden="true" data-board-body>
<span class="board__face board__face--front"><span class="board__word">Menu</span><span class="shade" data-shade></span></span>
<span class="board__face board__face--back"><span class="board__word">Close</span><span class="shade" data-shade></span></span>
</span>
<span class="sr" data-name>Open the menu</span>
</button>
<ul class="arms" id="sign-menu" data-arms inert>
<li><a class="arm" href="#line-up" style="--paint: #d4532f; --ink: #fff6e6" data-arm><span class="arm__label">Line-up</span></a></li>
<li><a class="arm" href="#tickets" style="--paint: #e9a823; --ink: #2b1a0b" data-arm><span class="arm__label">Tickets</span></a></li>
<li><a class="arm" href="#camping" style="--paint: #2f6b4c; --ink: #fff6e6" data-arm><span class="arm__label">Camping</span></a></li>
<li><a class="arm" href="#food" style="--paint: #2a7896; --ink: #fff6e6" data-arm><span class="arm__label">Food & drink</span></a></li>
<li><a class="arm" href="#getting-here" style="--paint: #6d3f7c; --ink: #fff6e6" data-arm><span class="arm__label">Getting here</span></a></li>
</ul>
</div>
</div>
<p class="sr" aria-live="polite" data-live></p>
</nav>
</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.
39 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 menu a frecce di legno» da Animorio e adattala al mio sitoOgni tavola è un elemento con transform-style: preserve-3d e dentro cinque fette piatte: la faccia dipinta davanti a translateZ(3,5 unità), tre fette di legno nudo a -2,2, 0 e 2,2, e la faccia dietro girata. Di fronte si vede solo la faccia; quando la tavola gira, le fette in mezzo sporgono una dietro l'altra e fanno lo spessore. La forma a freccia è un clip-path uguale per tutte le fette; il retro delle frecce è girato di rotateX(180deg), così quando la freccia scelta si ribalta sul lato lungo la scritta dietro si legge dritta.
Il palo è una finestra con overflow: hidden, alta quanto dice lo script, con dentro tutto il legno del palo attaccato al fondo: allungando la finestra il legno scende fuori dalla tavola con la punta davanti, come un palo telescopico. La lunghezza è su una molla smorzata (POLE_SPRING) che va un po' oltre e torna; quando il palo arriva al fermo, l'oscillazione SWAY fa ondeggiare tutta la scena con rotateZ dall'alto, su una molla molto lenta e poco smorzata.
Ogni freccia ha un angolo intorno al palo (90 gradi è ripiegata di taglio dietro al palo, 0 è fuori) e gira con rotateY intorno al bordo del palo, a sinistra o a destra (il segno cambia per le frecce di sinistra). Non c'è un ritardo fisso: a ogni fotogramma lo script guarda dov'è la punta del palo, e quando passa la metà di una freccia le dà la velocità FLING verso fuori. Così la cascata segue davvero il palo, anche se lo si richiude a metà.
La molla di torsione di ogni freccia (ARM_SPRING) è poco smorzata, quindi la freccia va oltre e oscilla. In più ogni freccia sente lo scarto delle vicine dalla loro posizione (COUPLING): è un sistema di oscillatori accoppiati, e l'oscillazione corre su e giù per il palo. La fisica fa quattro piccoli passi per fotogramma, col passo limitato a 1/30 di secondo, e non ridisegna quello che non è cambiato.
La normale di ogni faccia si calcola dagli angoli di rotateY e rotateX, e la sua luce è il prodotto con una luce che viene dall'alto a sinistra (Lambert): un velo scuro sopra la faccia ne prende l'opacità. Il puntatore che entra in una freccia le dà una spinta indietro proporzionale alla sua velocità (BRUSH); col dito la spinta arriva al tocco. La velocità di ogni freccia guida l'asse BNCE di Shantell Sans, un carattere variabile con le lettere che saltellano su e giù.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
POLE_SPRING | script.js | [150, 0.42] | Il palo che scivola fuori: quanto forte tira verso la sua lunghezza, e quanto è smorzato (1 = nessun rimbalzo). |
ARM_SPRING | script.js | [210, 0.26] | Le molle di torsione delle frecce intorno al palo: rigidità e smorzamento. |
FLING | script.js | 620 | Quanto veloce viene lanciata fuori una freccia quando il palo la raggiunge, in gradi al secondo. |
COUPLING | script.js | 70 | Quanta dell'oscillazione di una freccia passa alle vicine attraverso il palo. |
BRUSH | script.js | 1 | Quanto forte il puntatore spinge una freccia che sfiora. |
SPIN | script.js | [130, 0.34] | Il giro della tavola da Menu a Close: rigidità e smorzamento. |
FOLD_STAGGER | script.js | 0.055 | I secondi fra una freccia che si richiude e la successiva, chiudendo. |
SWAY | script.js | 1.4 | Quanto ondeggia tutto il cartello quando il palo arriva in fondo, in gradi. |
Per il menu di un sito che vive all'aperto: un festival, un campeggio, un parco, un rifugio, un percorso a piedi o in bici, una fattoria. Da tre a sei voci brevi (una dozzina di lettere al massimo), ognuna col suo colore; con di più il palo diventa troppo lungo per lo schermo.
Tutto il disegno si scala sulla larghezza dello schermo: a 390 pixel una freccia è lunga circa 155 e il cartello aperto ci sta senza sforare. Il dito che tocca una freccia le dà la stessa spinta del puntatore che la sfiora, e il tocco la sceglie.
Niente giri né oscillazioni: la tavola cambia faccia dietro una breve dissolvenza, e il palo con le frecce compare o sparisce già al suo posto, in dissolvenza. Le frecce non dondolano al passaggio e la scelta non le ribalta.
GSAP 3.15.0, Shantell Sans (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 9,7 KB; le librerie: GSAP 28 KB.
Provata il 13 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.