
Il logo sotto la palla da demolizione
Intro, Fisica, SVG, Testo
NuovaGratis
Nello stile minimal: un barattolo di vetro disegnato con due linee sottili e, a ogni clic, una parola che ci cade dentro, rimbalza e si posa sulle altre con la fisica vera dei corpi rigidi; cadendo è sottile e stretta, atterrando prende peso e larghezza. Il puntatore inclina il barattolo e le parole scivolano sul vetro; vuotandolo, il barattolo si rovescia e le parole escono dalla bocca.
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>Words in the jar</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- a glass jar drawn with two hairlines: a click drops a word in, the pointer tilts the jar and the words slide -->
<main class="stage" data-stage>
<button class="drop" type="button" data-drop data-autoclic aria-label="Drop a word into the jar"></button>
<!-- the plumb line and the angle of the jar, drawn in the page -->
<svg class="measure" data-measure aria-hidden="true">
<path class="measure__plumb" data-plumb d="" />
<path class="measure__axis" data-axis d="" />
<path class="measure__arc" data-arc d="" />
<text class="measure__label" data-angle x="0" y="0"></text>
</svg>
<!-- the jar and its words: one group, turned by the script around the middle of the jar -->
<div class="jar" data-jar>
<svg class="glass" data-glass aria-hidden="true">
<path class="glass__outer" data-outer d="" />
<path class="glass__inner" data-inner d="" />
<path class="glass__lip" data-lips d="" />
</svg>
<div class="words" data-words aria-live="polite"></div>
</div>
<p class="hint" data-hint>Click to drop a word. Move to tilt the jar.</p>
<button class="empty" type="button" data-empty data-autoclic>
<span class="empty__text" data-empty-text>Empty the jar</span>
</button>
</main>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/matter-js@0.20.0/build/matter.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.
25 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 «Le parole nel barattolo» da Animorio e adattala al mio sitoIl barattolo è un gruppo con l'origine al centro del vetro: dentro ci sono l'SVG delle pareti e le parole, e lo script lo sposta e lo gira con un solo transform. La parete esterna è un tracciato a U con gli angoli tondi, quella interna lo stesso tracciato rientrato dello spessore del vetro e scritto al contrario, così con pathLength 1 e stroke-dashoffset le due linee si disegnano in versi opposti. Per la fisica il vetro è fatto di corpi fermi: due pareti spesse quanto il vetro, un fondo e due triangoli negli angoli, perché una parola non resti incastrata dove la linea curva.
Ogni parola è un div con dentro le sue lettere, e Matter.js tiene un rettangolo grande quanto la parola al suo peso pieno. A ogni passo della fisica (centottanta al secondo, dentro gsap.ticker) il div prende posizione e rotazione dal suo corpo. Il corpo ha un'inerzia otto volte più grande di una scatola normale: una parola lunga e sottile che tocca il fondo con un angolo dondola e si sdraia, invece di ribaltarsi. Una piccola chiglia la riporta piano verso il dritto della pagina, così le parole restano leggibili; non vince mai contro il vetro o le altre parole.
La fisica lavora dentro il barattolo, che per lei non si muove mai: quando il barattolo si inclina di un angolo, nella fisica gira la gravità dello stesso angolo al contrario (seno e coseno dell'angolo). Così le pareti restano ferme e le parole scivolano come se il vetro girasse sotto di loro. L'angolo segue il puntatore con una molla che va appena oltre e torna; il filo a piombo, l'asse del barattolo e l'arco con i gradi si disegnano nella pagina, fuori dal gruppo che gira.
Al primo urto di una parola (l'evento collisionStart di Matter) un tween GSAP porta il peso del carattere da LIGHT a HEAVY e la larghezza da 72 a 100 con elastic.out, scritti in font-variation-settings. Intanto l'inchiostro si schiaccia e torna, le lettere scendono di un pixel e mezzo una dopo l'altra dal centro, e il barattolo riceve una piccola spinta in giù e una rotazione verso il lato dell'urto, smorzate da due molle. La forza dell'urto, misurata sulla velocità relativa dei due corpi, decide quanto.
Empty the jar è una timeline GSAP sull'angolo: il barattolo va a 138 gradi, dà quattro scosse e aspetta. Il vetro diventa scivoloso (l'attrito delle parole scende quasi a zero) e la chiglia si spegne, così le parole escono dalla bocca invece di incastrarsi. Una parola uscita dal vetro perde peso e larghezza cadendo, svanisce e il suo corpo si toglie dalla fisica; appena il barattolo è vuoto l'attesa si accorcia e il barattolo torna dritto. Con il movimento ridotto niente si muove: la fisica gira tutta in una volta senza mostrarsi e le parole compaiono in dissolvenza dove si fermerebbero.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
WORDS | script.js | ['flour', 'salt', 'honey', 'rye', 'fig', 'thyme', 'butter', 'lemon', 'oats', 'basil', 'sugar', 'yeast'] | Le parole che cadono nel barattolo, in quest'ordine (fino a 12 lettere l'una). Le prime cinque le fa cadere l'entrata. |
TILT | script.js | 14 | Di quanti gradi il puntatore può inclinare il barattolo da ogni parte. |
GRAVITY | script.js | 1.3 | Quanto forte cadono le parole: più è alta, più l'urto è secco. |
BOUNCE | script.js | 0.16 | Quanto rimbalza una parola quando atterra: 0 si ferma dove tocca, 0.5 salta. |
FRICTION | script.js | 0.06 | Quanto tengono le parole sul vetro e fra loro: più è basso, prima scivolano quando il barattolo si inclina. |
LIGHT | script.js | 300 | Il peso del carattere mentre una parola cade, da 100 a 900. |
HEAVY | script.js | 640 | Il peso che la parola prende atterrando. |
Per raccogliere scelte con un gesto: gli ingredienti di una ricetta, i tag di un articolo, i gusti di un gelato, i filtri di un catalogo, le competenze nella pagina di chi lavora in proprio. Funziona anche da sola, come momento di gioco nell'apertura di un sito di cucina, di una dispensa o di un negozio di alimentari.
Lo stesso barattolo con le misure adattate: più largo rispetto alla pagina, parole un po' più grandi rispetto al vetro e la stessa fisica, in proporzione. Un tocco fa cadere una parola; trascinando il dito a destra o a sinistra il barattolo si inclina, e lasciandolo torna dritto (un trascinamento non fa cadere parole).
Niente cade e niente si inclina: la fisica gira tutta in una volta senza mostrarsi e le parole compaiono in dissolvenza già ferme dove si poserebbero. Empty the jar le fa sparire in dissolvenza; il barattolo resta dritto.
GSAP 3.15.0, Matter.js 0.20.0, Archivo (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 10 KB; le librerie: GSAP 28 KB, Matter.js 25 KB.
Provata il 15 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.