
Il titolo che si alza dalla linea
Transizioni, Testo, Immagini
NuovaGratis
Venti piccole stampe astratte sparse un po' storte sulla carta: scegliendo un ordine, per colore, per forma o per anno, ognuna si alza, scivola su una curva fino al suo posto in colonna e atterra su una molla, una dopo l'altra. Sopra le colonne un'etichetta sottile entra lettera per lettera, una riga si disegna e il conto sale mentre arrivano. Stile minimal.
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>Tally, prints in order</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/roboto-flex@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- a small archive of abstract prints, drawn by the script: a click on an order and every print slides to its new place -->
<main class="room" data-room>
<header class="top">
<p class="mark" data-mark aria-label="Tally">Tally</p>
<nav class="sort" data-sort aria-label="Sort the prints">
<span class="sort__by" data-by>Sort by</span>
<span class="sort__keys">
<span class="sort__frame" data-frame aria-hidden="true"></span>
<button class="key" type="button" data-key="colour" data-autoclic aria-pressed="false"><span class="key__t">Colour</span></button>
<button class="key" type="button" data-key="shape" data-autoclic aria-pressed="false"><span class="key__t">Shape</span></button>
<button class="key" type="button" data-key="year" data-autoclic aria-pressed="false"><span class="key__t">Year</span></button>
<button class="key" type="button" data-key="loose" data-autoclic aria-pressed="true"><span class="key__t">Loose</span></button>
</span>
</nav>
</header>
<!-- the column heads (a thin label, a count and a hairline) and the prints: both built by the script -->
<section class="board" data-board aria-label="Prints">
<div class="heads" data-heads aria-hidden="true"></div>
<ul class="prints" data-prints></ul>
</section>
<footer class="foot" aria-hidden="true">
<p class="foot__status"></p>
<p class="foot__total" data-total></p>
</footer>
<p class="sr" data-live aria-live="polite"></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.
119 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 stampe che si mettono in ordine» da Animorio e adattala al mio sitoPRINTS è un elenco: titolo, colore, forma, anno e una delle tre composizioni di ogni forma. Lo script disegna ogni stampa come un SVG 100 per 100 con la forma riempita da una classe (f-vermilion, f-ink…) che legge il colore da :root, e per ogni ordine raggruppa le stampe per quel campo: le colonne seguono l'ordine dei colori e delle forme, gli anni dal più vecchio, e dentro la colonna le stampe vanno per anno o per colore.
Per ogni ordine lo script calcola il posto di ogni stampa: le colonne sono larghe una, due o tre stampe, quanto serve perché le stampe siano più grandi possibile in tutti gli ordini (larghe una se restano almeno di 80 pixel, così si alzano come barre), e il disordine è una griglia con le stampe mescolate da un generatore a seme fisso, spostate e girate di poco. Le stampe sono posizionate in assoluto e GSAP muove solo x, y e rotation: niente misure del DOM durante il movimento.
Ogni stampa viaggia su una curva di Bézier quadratica dal punto in cui si trova a quello nuovo, col punto di controllo spostato di lato (ARC) e sempre verso l'alto, sopra le altre. Un tween porta p da 0 a 1 con una molla vera (SPRING decide quanto supera il punto) e a ogni fotogramma la stampa va al punto della curva con gsap.quickSetter. Oltre 1 la curva continua nella stessa direzione: l'overshoot è nel verso giusto. Le stampe partono STAGGER secondi una dopo l'altra, nell'ordine dei posti nuovi.
Il momento in cui la molla tocca per la prima volta il suo punto si calcola una volta sola, campionando la curva. Lì l'SVG si schiaccia (scaleX 1,03, scaleY 0,965 dal fondo) e si rialza con elastic.out, la stampa sopra nella stessa colonna scende di un pixel e mezzo e torna, e il conto della colonna sale di uno. Il sollevamento con l'ombra sta su un figlio, .print__in, e lo schiacciamento sull'SVG: tre elementi, ognuno con le sue proprietà, così i tween non si cancellano a vicenda.
Le etichette sono lettere in span dentro una finestra con overflow hidden: le vecchie escono in alto, le nuove entrano dal basso allargandosi con font-stretch, e una parola troppo lunga per la colonna si stringe sull'asse wdth invece di essere tagliata. Un clic durante il movimento ferma la timeline e ne parte una nuova dai punti in cui le stampe si trovano. Sul telefono le colonne sono larghe una stampa e il disordine ha quattro colonne. Con il movimento ridotto le stampe svaniscono e ricompaiono al posto nuovo.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
PRINTS | script.js | 20 stampe | Le stampe: titolo, colore (vermilion, ink, stone, sand), forma (circle, square, triangle, arch), anno e composizione (0, 1 o 2). Un anno nuovo fa una colonna nuova. |
STAGGER | script.js | 0.035 | I secondi fra la partenza di una stampa e quella dopo: 0 = partono tutte insieme. |
GLIDE | script.js | 0.95 | I secondi che una stampa impiega per arrivare al suo posto nuovo. |
SPRING | script.js | 0.12 | Quanto una stampa supera il suo posto prima di fermarsi: 0 = per niente, 1 = molto. |
ARC | script.js | 0.16 | Quanto si piega la strada di una stampa: 0 = in linea retta. |
TILT | script.js | 3.5 | I gradi di cui le stampe in disordine sono storte; in colonna stanno dritte. |
SPEED | script.js | 1 | La velocità di tutto: 2 è il doppio, 0.5 la metà. |
Per un archivio o un catalogo da riordinare senza cambiare pagina: le opere di un portfolio per anno o per tecnica, i prodotti di un negozio per colore o per categoria, le stanze di un albergo, i piatti di una carta, le date di un festival. Rende bene quando gli elementi sono piccole immagini quadrate tutte uguali di misura.
Le stesse animazioni con le misure adattate: gli ordini vanno sotto il nome, le colonne sono larghe una stampa sola, il disordine ha quattro colonne e un'etichetta troppo lunga per la colonna (Vermilion) si stringe sull'asse della larghezza. Un tocco su un ordine fa partire il riordino.
Niente scivola: all'apertura tutto compare in dissolvenza; cambiando ordine le stampe e le etichette svaniscono e ricompaiono già al posto nuovo, e la cornice dell'ordine scelto salta senza molla.
GSAP 3.15.0, Roboto Flex (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 12 KB; le librerie: GSAP 28 KB.
Provata il 14 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.