
Nastro che accelera con lo scorrimento
Scroll, Testo, Hover
Gratis
L'indice di un libro con un filo sottile fra ogni titolo e la sua pagina, al posto dei puntini: sotto il puntatore il filo si tende e si accorcia, tira il numero fino al titolo e il numero conta come un contatore dalla pagina dov'eri a quella del capitolo, poi si accende; il titolo prende peso. Lasciato, il numero torna al margine e il filo si allenta vibrando. 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>Contents on a taut thread</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/newsreader@5.3.0/standard.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage" data-stage>
<header class="top">
<span class="top__name">Low Water</span>
<span class="top__note">Contents</span>
</header>
<!-- the contents: a title on the left, its page on the right, a hairline between them that hangs a little.
Under the pointer the line goes taut and short, pulling the page towards the title while it counts up to it -->
<nav class="toc" aria-label="Contents" data-toc></nav>
<p class="hint">Point at a chapter</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.
32 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 a filo teso» da Animorio e adattala al mio sitoOgni capitolo è un link con display: grid: il titolo e il numero stanno nella stessa cella con align-items: baseline, così le linee di base coincidono, e il numero si sposta solo con transform: translateX dal bordo sinistro. Il filo è un svg assoluto grande quanto la riga, con un solo path. Davanti al numero c'è un'imbottitura di zeri nascosti: mentre conta resta largo quanto la sua pagina, quindi a riposo sta a filo del margine e in viaggio non salta.
A ogni fotogramma il path è M x0 y Q xm y+s x1 y: parte poco dopo il titolo (la sua larghezza si rilegge perché cambia col peso) e finisce poco prima del numero. Il punto di mezzo scende di s, che è la pendenza della molla del filo moltiplicata per la lunghezza: un filo lungo pende di SAG pixel, uno corto quasi niente. L'altezza del filo è a metà delle cifre.
La posizione del numero insegue la sua meta (il margine, o il titolo più GAP) su una molla quasi critica, NUMBER_SPRING, che va oltre di un pixel e torna. La pendenza del filo insegue zero quando è teso e SAG quando è lento, su una molla poco frenata, STRING_SPRING: per questo, lasciato, vibra come una corda. Le molle si integrano a mano sul ticker di GSAP a piccoli passi di 1/240 di secondo, stabili con ogni frequenza dello schermo.
Il numero è un oggetto { v } portato da un tween di GSAP, COUNT_TIME secondi in power2.out, dalla pagina dell'ultimo capitolo guardato a quella di questo, e scritto arrotondato a ogni fotogramma. Alla fine del tween la riga prende la classe is-set e il numero passa al vermiglio con una transizione CSS. Se si lascia il capitolo prima, il conto finisce in fretta sulla sua pagina mentre il numero torna indietro.
Un solo pointermove sulla finestra cerca la riga sotto il puntatore dalla sua fascia d'altezza, larga quanto tutta la pagina: cambiare riga lascia la vecchia e tira la nuova. Lasciare e posarsi danno un colpetto alla velocità della pendenza dei fili vicini, moltiplicato per NEIGHBOURS. Il dito tira il capitolo che tocca e lo lascia tirato finché non tocca altrove; i link prendono il fuoco col Tab e fanno lo stesso.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
CHAPTERS | script.js | [['Before the tide', 9], …] | I capitoli: il titolo e la pagina, nell'ordine del libro. |
GAP | script.js | 68 | Quanto si avvicina il numero al suo titolo, in pixel (il filo teso riempie lo spazio). |
SAG | script.js | 3 | Di quanto pende un filo lungo a riposo, in pixel. |
NUMBER_SPRING | script.js | [230, 28] | La molla del numero: quanto è rigida e quanto è frenata. |
STRING_SPRING | script.js | [520, 7] | La molla del filo: quanto è rigida e quanto è frenata (meno freno, più a lungo vibra). |
WEIGHT | script.js | [320, 580] | Il peso del titolo a riposo e sotto il puntatore (da 200 a 800). |
COUNT_TIME | script.js | 0.6 | I secondi che il numero impiega a contare fino alla sua pagina. |
NEIGHBOURS | script.js | 0.5 | Quanto sentono i fili vicini un numero che si posa o che torna (da 0 a 1). |
Per l'indice di un libro, di un ebook o di una rivista online, per il sommario di un articolo lungo o di una guida, per l'elenco dei capitoli di un corso: ogni voce con un numero (pagina, minuto, prezzo) da collegare al suo titolo. Funziona con una decina di voci al massimo e titoli che stanno su una riga; con voci lunghe che vanno a capo il filo non ha posto.
Le stesse animazioni a misure adattate: la colonna è larga quanto lo schermo, i titoli più piccoli, i fili più corti e quindi un poco meno pendenti. Toccando un capitolo il filo lo tira e lo lascia tirato finché non si tocca un altro capitolo o fuori; trascinando il dito si passa da un capitolo all'altro. Il suggerimento in fondo dice Tap a chapter.
Niente molle, niente fili che vibrano e niente conto: sotto il puntatore il numero compare già vicino al titolo con una breve dissolvenza, col filo corto e teso, e il titolo prende peso; lasciando, il numero ricompare in dissolvenza sul margine. All'apertura tutto compare in dissolvenza già al suo posto.
GSAP 3.15.0, Newsreader (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 6,2 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.