
Lettere in piedi con l'ombra lunga
Testo, Scroll, 3D
NuovaGratis
Scorri dentro l’anteprima
L’indice di un lungo racconto su un diario personale, nello stile minimal: scendendo, il capitolo che stai leggendo sta in cima, grande e pesante, con un segnalibro blu sottile; finito, si rimpicciolisce, si scosta e scende in fondo fra quelli già letti, grigio e stretto con l’asse wdth, mentre gli altri salgono di una riga uno dopo l’altro su una molla e il successivo cresce al suo posto. In alto i minuti che restano contano all’indietro.
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 index that follows the reading</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/instrument-sans@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- the index of a long essay on a made-up personal journal. Scrolling, the chapter being read climbs to the top of
the index and grows; when it is done it steps aside, shrinks, narrows and goes to the bottom with the chapters
already read, while the next one rises in its place -->
<main>
<section class="apertura">
<p class="piccolo">Odalo, a journal</p>
<h1 class="titolo">A year<br>on foot.</h1>
<p class="piccolo piccolo--tenue">Scroll to read along.</p>
</section>
<section class="racconto" data-racconto>
<div class="palco" data-palco>
<header class="testa">
<p class="marchio">Odalo</p>
<p class="piccolo piccolo--tenue"><span class="resto" data-resto>25</span> min left</p>
</header>
<nav class="indice" aria-label="Chapters" data-indice>
<ol class="voci" data-voci></ol>
<i class="filo filo--sopra" data-filo-sopra aria-hidden="true"></i>
<i class="filo filo--letti" data-filo-letti aria-hidden="true"></i>
<i class="nastro" data-nastro aria-hidden="true"></i>
</nav>
</div>
</section>
<section class="apertura apertura--fine">
<h2 class="titolo titolo--medio">Thanks for<br>walking along.</h2>
</section>
</main>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/gsap.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/ScrollTrigger.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.
29 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 «L’indice che segue la lettura» da Animorio e adattala al mio sitoI capitoli sono li assoluti dentro un palco fissato (position: sticky, alto 100lvh) e non cambiano mai ordine nel DOM. Al capitolo k ogni voce j sta nel posto (j − k + N) mod N: il posto 0 è la cima, poi quelli da leggere, poi quelli letti, staccati da un piccolo vuoto. Una funzione dà la y di ogni posto, e il disegno mette solo transform, font-size e font-variation-settings.
La timeline, con scrub SCRUB, porta un numero p da 0 al numero dei capitoli meno uno. La parte intera è il capitolo che si legge, il resto il cambio: per la prima parte (HOLD) l’indice sta fermo, nel resto ogni voce passa dal suo posto a quello del capitolo dopo. Tutto si calcola da p, quindi andando indietro l’indice si rimette in ordine da solo.
Il capitolo appena letto si rimpicciolisce nella prima metà (power3.inOut), poi scende su un arco: x = sen(π·t) per una distanza, così passa di lato alle altre voci, e arriva per ultimo. Le altre salgono di una riga con la curva SETTLE, ognuna STAGGER più tardi di quella sopra, e lasciano libero il posto prima che arrivi. Il successivo sale e cresce con la stessa curva: la cima va un filo oltre e torna.
Instrument Sans è variabile in peso (400–700) e in larghezza (75–100). Le tre specie di voce hanno ognuna il suo aspetto (in lettura 640 e 100, da leggere 470 e 100, lette 420 e 76 in grigio) e nel cambio i valori si mescolano: la voce letta si stringe e ingrigisce mentre scende. Il colore si mescola con gsap.utils.interpolate fra le due variabili CSS.
Il segnalibro è un elemento largo 2 pixel scalato in altezza: si chiude con power2.in e si riapre con la curva SETTLE. La riga sopra i capitoli letti si disegna con scaleX la prima volta e poi sta a metà del vuoto sopra il primo letto. I minuti che restano tolgono quelli di ogni capitolo mentre lo si passa.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
CHAPTERS | script.js | [['Leaving', 4], ['The coast road', 7], …] | I capitoli: titolo e minuti di lettura. |
BIG | script.js | 1 | Quanto è grande il capitolo che si legge, rispetto alla pagina (da 0,6 a 1,4). |
SETTLE | script.js | 'back.out(1.5)' | La curva con cui i capitoli si posano nelle righe: il numero fra parentesi è quanto vanno oltre. |
STAGGER | script.js | 0.07 | Quanto partono distanti le voci che salgono, come parte del cambio. |
HOLD | script.js | 0.35 | La parte di ogni capitolo in cui l’indice resta fermo, da 0 a 0,8. |
SCRUB | script.js | 0.6 | Quanti secondi ci mette l’indice a raggiungere lo scorrimento. |
Per un articolo lungo, un racconto a capitoli, una guida o un manuale: accanto al testo vero, come indice fisso che dice dove sei e quanto manca. Va bene da tre a sette capitoli con titoli corti; con di più l’elenco non sta in uno schermo.
Uguale, con misure adattate: l’indice prende tutta la larghezza, il titolo in cima è più piccolo, le righe più strette e l’arco del capitolo che scende più largo, per passare di lato alle altre voci.
Niente voli né rimbalzi: alla fine di ogni capitolo l’indice si dissolve e ricompare già nell’ordine nuovo, col segnalibro accanto al capitolo dopo; i minuti contano lo stesso.
GSAP 3.15.0, ScrollTrigger (GSAP) 3.15.0, Instrument Sans (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 6,1 KB; le librerie: GSAP + ScrollTrigger 45 KB.
Provata il 19 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.