
Il logo sotto la palla da demolizione
Intro, Fisica, SVG, Testo
NuovaGratis
Nello stile minimal: una bilancia a due piatti disegnata con linee sottili e sei parole corte, ognuna in un peso diverso dello stesso carattere variabile. Più la parola è nera, più pesa. Cliccata vola sul piatto più leggero, trascinata va dove la porti; il giogo è un pendolo smorzato vero, s'inclina, oscilla e si assesta, e quando i due lati pesano uguale l'ago si ferma sullo zero e si accende.
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>Weigh your words</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/roboto-flex@5.3.0/standard.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- a two-pan balance drawn in hairlines: the words weigh what their type weighs, and the needle lights up on zero
when the two sides are even. The lines are an SVG redrawn by the script at every frame. -->
<main class="stage" data-stage>
<svg class="lines" data-lines aria-hidden="true">
<path class="guide" data-guide d="" />
<path class="hair" data-base d="" />
<path class="hair" data-post d="" />
<path class="hair" data-ticks d="" />
<path class="zero" data-zero d="" />
<path class="needle" data-needle d="" />
<path class="hair" data-strings-l d="" />
<path class="hair" data-strings-r d="" />
<path class="pan" data-pan-l d="" />
<path class="pan" data-pan-r d="" />
<path class="beam" data-beam d="" />
<path class="knife" data-knife d="" />
</svg>
<span class="total" data-total-l aria-hidden="true">0</span>
<span class="total" data-total-r aria-hidden="true">0</span>
<div class="tray" data-tray></div>
<p class="hint" data-hint>Click a word to weigh it, or drag it onto a pan.</p>
<p class="read" aria-live="polite"><span class="read__label" data-read-label>Scale</span> <span class="read__clip"><b class="read__value" data-read>Empty</b></span></p>
</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.
28 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 «La bilancia delle parole» da Animorio e adattala al mio sitoOgni parola è un pulsante con il suo font-weight, da 100 a 900, e pesa quel numero diviso cento. Il carattere è Roboto Flex, che ha l'asse del peso da 100 a 1000 e quello della larghezza da 25 a 151: il peso resta fisso perché è l'identità della parola, la larghezza invece si muove (si stringe in volo, si allarga nello schiacciamento). Per impilarle strette, l'altezza vera dell'inchiostro di ogni parola si misura su una canvas con measureText (actualBoundingBoxAscent e Descent), nello stesso peso: la scatola della riga lascerebbe dei buchi.
Il giogo ha un angolo e una velocità, mossi a passi fissi di un duecentoquarantesimo di secondo dentro gsap.ticker. La differenza fra i due piatti spinge con il suo braccio (cos θ), il baricentro del giogo, che sta sotto il fulcro, lo riporta in piano (sin θ), e uno smorzamento con un rapporto fisso fa il resto: in equilibrio tan θ è la differenza divisa per la sensibilità, quindi cento di differenza valgono TILT gradi. L'inerzia cresce con il carico, quindi una bilancia piena oscilla più lenta. Oltre STOP gradi il giogo batte sul fermo e rimbalza poco.
Ogni piatto pende dalla punta del giogo con il suo angolo. Dalla posizione della punta a ogni passo si ricavano velocità e accelerazione, e il piatto risponde come un pendolo con il punto di sospensione che si muove: l ψ'' = ẍ cos ψ − (g − ÿ) sin ψ, più un po' di smorzamento. Quando il giogo scatta o batte sul fermo, i piatti restano indietro e dondolano. Le parole sul piatto girano con lui, nel suo sistema di riferimento.
Il volo è una curva cubica che parte verso l'alto e scende dritta sul piatto dall'alto, ricalcolata a ogni fotogramma perché il piatto si muove. Il peso conta solo quando la parola tocca, non quando parte: all'atterraggio un piccolo impulso proporzionale al peso e alla velocità di caduta spinge il giogo, il piatto si piega con elastic.out e la parola si schiaccia con scaleY e l'asse della larghezza; quelle sotto, la più vicina per prima, fanno lo stesso più piano.
Se i due totali sono uguali e il giogo è in piano e quasi fermo, un tween porta l'ago dal nero al vermiglio con back.out e allunga la tacca dello zero; basta che la bilancia si muova per spegnerla. Quando giogo e piatti sono fermi davvero la fisica si addormenta e il giogo va al suo angolo esatto, così l'immagine resta ferma. Con il movimento ridotto la bilancia compare in dissolvenza, le parole spariscono e ricompaiono al loro posto e il giogo è già all'angolo giusto.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
WORDS | script.js | ['lead', 'stone', 'paper', 'silk', 'bread', 'salt'] | Le parole sotto la bilancia (fino a otto, corte). |
WEIGHTS | script.js | [900, 700, 300, 200, 500, 400] | Il peso del carattere di ogni parola, da 100 a 900: è anche quanto pesa sulla bilancia. |
SWING | script.js | 1.3 | I secondi di un'oscillazione del giogo vuoto; carico oscilla più lento, come uno vero. |
SETTLE | script.js | 0.6 | Quanto presto si spegne l'oscillazione: 0.2 dondola a lungo, 1 si posa senza overshoot. |
TILT | script.js | 2.6 | Di quanti gradi s'inclina il giogo per ogni 100 di differenza fra i due piatti. |
STOP | script.js | 15 | A quanti gradi il giogo batte sul fermo (e fin dove arriva la scala dell'ago). |
FLIGHT | script.js | 0.72 | I secondi del volo di una parola fino al piatto. |
KNOCK | script.js | 1 | Quanto forte una parola che atterra spinge giù il piatto (0 = la posa piano). |
--accent | style.css | #e5391c | Il colore dell'ago quando i due lati sono pari. |
Per una pagina che mette a confronto due cose: due piani di un abbonamento, due offerte, un prima e dopo. Per una copertina di tipografia che mostra i pesi di un carattere, la pagina di un font, un portfolio che gioca con le parole, una landing page che vuole un momento da toccare.
Le stesse animazioni e la stessa fisica, con le misure adattate: il giogo si accorcia perché i piatti stiano dentro lo schermo, i fili sono più corti, le parole più piccole e su due righe. Un tocco manda la parola sul piatto più leggero, col dito la si trascina.
Niente si muove: la bilancia e le parole compaiono in dissolvenza; un clic fa sparire la parola e la fa ricomparire sul piatto (o al suo posto), e il giogo è già all'angolo giusto. Quando i lati sono pari l'ago si colora in dissolvenza.
GSAP 3.15.0, Roboto Flex (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 11 KB; le librerie: GSAP 28 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.