
Nastro che accelera con lo scorrimento
Scroll, Testo, Hover
Gratis
Scorri dentro l’anteprima
L’ultima sezione della pagina scivola via e scopre il piede, fermo sotto come se fosse sempre stato lì, mentre le lettere del motto salgono una dopo l’altra dalla loro riga. A piede aperto la lettera sotto il puntatore si allunga verso di lui, in su o in giù, le due vicine la seguono a metà, e tutte e tre prendono un colore e si piegano verso la mano.
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>Letters within reach</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/familjen-grotesk@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- the last section of the page: it slides away and uncovers the footer -->
<main class="closing">
<div class="closing__inner">
<p class="closing__brand">Common Room</p>
<h1 class="closing__title">Long tables, loud dinners, and chairs that can take it.</h1>
<p class="closing__line">Oak tables for ten, benches for twelve, chairs that stack when the guests go home.</p>
<a class="closing__button" href="#">Find your table</a>
</div>
<p class="closing__hint" data-hint>Scroll to the end</p>
</main>
<!-- the footer waits under the page: the mask makes room for it, the footer itself stays put while the page moves -->
<div class="mask" data-mask>
<footer class="foot" data-foot>
<div class="foot__top">
<p class="foot__lead">Dinner is better with more people at the table.</p>
<nav class="foot__cols" aria-label="Footer">
<div>
<p class="foot__head">Shop</p>
<a href="#">Tables</a>
<a href="#">Benches</a>
<a href="#">Chairs</a>
</div>
<div>
<p class="foot__head">Visit</p>
<a href="#">The workshop</a>
<a href="#">Opening hours</a>
</div>
<div>
<p class="foot__head">Say hello</p>
<a href="#">Write to us</a>
<a href="#">Instagram</a>
</div>
</nav>
</div>
<!-- the motto: each letter is its own span, so the pointer can reach it -->
<p class="slogan" data-slogan aria-label="good company">good company</p>
<div class="foot__bottom">
<p>Common Room, tables built in small batches</p>
<button class="foot__top-link" type="button" data-top>Back to top</button>
</div>
</footer>
</div>
<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="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/CustomEase.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.
36 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 «Lettere a portata di mano» da Animorio e adattala al mio sitoIl piede sta dentro una maschera alta quanto lui, sotto la sezione di chiusura che ha lo z-index più alto. Un solo tween di ScrollTrigger lo sposta da yPercent −100 a 0 mentre la maschera va dal fondo dello schermo al suo bordo inferiore, con scrub e senza curva: il piede scende esattamente quanto la pagina sale, quindi sullo schermo resta fermo e sembra scoperto, non arrivato.
Il motto viene spezzato in lettere, ognuna fatta di due span. Quello esterno aspetta RISE altezze più in basso, nascosto dalla riga che ha overflow: hidden, e sale con una timeline ferma che segue il progresso del piede: STAGGER secondi fra una lettera e l’altra, su una curva CustomEase che arriva morbida. Al 95% dell’apertura la riga si apre (overflow: visible) e le lettere possono uscirne; si richiude solo sotto l’88%, così sul bordo non sfarfalla.
La lettera sotto il puntatore è quella su cui sta, misurata con offsetLeft e offsetWidth, che non risentono delle trasformazioni; fra due lettere vale la più vicina. Lo spazio non conta: le vicine di «d» sono «o» e «c». Prima di tutto si controlla che il puntatore sia dentro la parte visibile del piede, altrimenti le lettere tornano a posto.
La distanza verticale fra il puntatore e la riga, moltiplicata per REACH (un quarto per la lettera sotto, un ottavo per le vicine), dice di quanto si sposta lo span interno. L’inclinazione viene dalla distanza orizzontale dal centro della lettera, fino a LEAN gradi, nel verso che la porta verso la mano. Il colore è fisso per lettera, dall’elenco COLORS. Ogni cambio è un tween di PAINT secondi con overwrite auto, e solo se il valore cambia davvero.
Dopo GHOST secondi senza puntatore sul piede, un ticker di GSAP muove un puntatore finto: avanti e indietro sulla larghezza del motto in 5,2 secondi, su e giù con un seno più veloce, sempre dentro il piede. Basta un movimento vero per spegnerlo.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
REACH | script.js | 0.25, 0.125 | Di quanto segue il puntatore la lettera sotto di lui, e di quanto le due vicine, come parte della distanza dalla riga. |
LEAN | script.js | 6 | Quanto si inclinano le lettere raggiunte verso il puntatore, in gradi. |
PAINT | script.js | 0.18 | I secondi che una lettera impiega a cambiare colore e altezza. |
SETTLE | script.js | 0.28 | I secondi che impiegano a tornare in riga quando il piede si richiude. |
RISE | script.js | 1.3 | Quanto sotto la riga aspettano le lettere prima che il piede si apra, in altezze di lettera. |
STAGGER | script.js | 0.04 | Il ritardo fra una lettera e la successiva mentre salgono, in secondi di una salita di 0,6. |
GHOST | script.js | 2.5 | I secondi senza puntatore prima che la mano invisibile giochi con le lettere. A 0 non arriva mai. |
COLORS | script.js | #d9643a, #7d8b4a, #9b6aa8, #e8a427, #3e8e8c | I colori delle lettere, uno per lettera, a turno. |
--sand | style.css | #e8dcc6 | Il colore del piede. |
--night | style.css | #1f2a22 | Il colore della sezione che scivola via. |
Per il piede di qualunque sito che abbia un nome o un motto corto da far vedere in grande: due parole, al massimo una dozzina di lettere. Con una frase lunga le lettere diventano piccole e il gioco non si legge. Vuole un carattere pieno e lettere distinte; un corsivo legato si spezzerebbe nei punti di attacco.
Il piede si scopre allo stesso modo scorrendo col dito. Toccando il motto e trascinando, le lettere seguono il dito; sul motto la pagina non scorre, sopra sì. Quando il dito si alza le lettere tornano in riga e, dopo due secondi e mezzo, arriva la mano invisibile.
Il piede sta semplicemente sotto la pagina e le lettere sono già in riga. Sotto il puntatore prendono il colore ma non si spostano né si inclinano, e la mano invisibile non c’è.
GSAP 3.15.0, ScrollTrigger (GSAP) 3.15.0, CustomEase (GSAP) 3.15.0, Familjen Grotesk (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 6,1 KB; le librerie: GSAP + ScrollTrigger + CustomEase 49 KB.
Provata il 1 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.