
Lettere in piedi con l'ombra lunga
Testo, Scroll, 3D
NuovaGratis
Scorri dentro l’anteprima
Animazione di scroll nello stile minimal, su bianco caldo: una frase disegnata a contorni sottili, come lettere di vetro, si riempie d’acqua blu man mano che si scende, dalla riga di sotto a quella di sopra. La superficie ondeggia da sola, sciaborda se si scorre in fretta, si inclina verso il puntatore e prende una goccia dove si tocca; le bollicine salgono e una scala sottile a lato segna i millilitri.
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>Brimvale Glass</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/fraunces@5.3.0/index.css">
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- a made-up maker of glass carafes, Brimvale. The stage sticks while you scroll: the sentence is drawn as thin glass
outlines and water rises inside the letters as you scroll, with a surface that sways, sloshes when you scroll
fast, leans towards the pointer and takes a drop where you tap. A thin gauge on the side reads the millilitres.
The water, the surface and the bubbles are drawn by the script -->
<main>
<section class="corsa" data-corsa>
<div class="palco" data-palco>
<header class="testa">
<a class="marchio" href="#" data-entra>Brimvale</a>
<p class="testa__nota" data-entra>Glass carafes, blown by hand</p>
</header>
<svg class="tela" data-tela viewBox="0 0 1000 640" role="img" aria-label="Slowly, then all at once.">
<defs>
<clipPath id="lettere" data-lettere>
<text class="riga" x="470" y="190" text-anchor="middle">Slowly,</text>
<text class="riga" x="470" y="360" text-anchor="middle">then all</text>
<text class="riga" x="470" y="530" text-anchor="middle">at once.</text>
</clipPath>
<linearGradient id="acqua-grad" x1="0" y1="0" x2="0" y2="1">
<stop offset="0" class="acqua__alto"/>
<stop offset="1" class="acqua__basso"/>
</linearGradient>
</defs>
<!-- the glass: a thick outline with the paper colour laid over its inner half, so only the outer edge shows
and the overlapping parts inside the letters stay hidden; the water goes on top -->
<g class="contorni" data-contorni>
<g class="contorni__bordo">
<text class="riga" x="470" y="190" text-anchor="middle">Slowly,</text>
<text class="riga" x="470" y="360" text-anchor="middle">then all</text>
<text class="riga" x="470" y="530" text-anchor="middle">at once.</text>
</g>
<g class="contorni__vetro">
<text class="riga" x="470" y="190" text-anchor="middle">Slowly,</text>
<text class="riga" x="470" y="360" text-anchor="middle">then all</text>
<text class="riga" x="470" y="530" text-anchor="middle">at once.</text>
</g>
</g>
<g clip-path="url(#lettere)">
<path class="acqua" data-acqua d="M0 640 H1000 V640 Z"/>
<path class="acqua__riflesso" data-riflesso d="M0 0"/>
<g data-bolle></g>
<path class="acqua__pelo" data-pelo d="M0 0"/>
</g>
<circle class="goccia" data-goccia r="7" cx="0" cy="-20"/>
<g class="scala" data-scala>
<path class="scala__asta" d="M944 80 V560"/>
<g data-tacche></g>
<g class="scala__indice" data-indice>
<path d="M926 0 H962"/>
<text class="scala__numero" data-numero x="914" y="5" text-anchor="end">0 ml</text>
</g>
</g>
</svg>
<p class="cenno" data-entra>Scroll to pour, tap for a drop</p>
<p class="stato" data-entra>Carafe <span class="stato__parola" data-stato>empty</span></p>
</div>
</section>
<footer class="piede">
<p>Each Brimvale carafe holds 500 ml and is blown, cooled and polished in one small workshop.</p>
</footer>
</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="https://cdn.jsdelivr.net/npm/lenis@1.3.26/dist/lenis.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.
25 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 frase che si riempie d’acqua allo scroll» da Animorio e adattala al mio sitoLa frase sta due volte nell’SVG: una dentro un clipPath, che fa da maschera all’acqua, e una sopra, senza riempimento e col solo contorno di un pixel e mezzo. L’acqua è un tracciato largo quanto il disegno, che va dal pelo fino al fondo: la maschera la mostra solo dentro le lettere, quindi sale riga dopo riga da sola.
A ogni fotogramma il pelo si ridisegna ogni dieci unità: due onde che corrono in versi opposti, una terza più lunga per lo sciabordio, l’inclinazione verso il puntatore e le increspature delle gocce, ognuna un treno d’onde che si allarga e si spegne. Il livello viene dallo scroll, ammorbidito un poco.
Lo sciabordio segue la velocità dello scroll su una molla, quindi cresce quando si scorre in fretta e si spegne quando ci si ferma; l’inclinazione segue il puntatore su un’altra molla, con un piccolo passaggio oltre. Da fermi, un puntatore finto ondeggia da solo e ogni tanto cade una goccia.
La scala ha una tacca ogni 25 ml e le cifre ogni 100; l’indice è un gruppo che si sposta con il livello. La parola in basso cambia con un piccolo rimbalzo, e a caraffa piena le onde si calmano e l’indice fa un salto.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
RIDE | script.js | 1 | Quanto scroll serve per riempire: 2 è il doppio. |
FULL_AT | script.js | 0.9 | A che punto della pagina l’acqua arriva in cima (da 0 a 1). |
WAVES | script.js | 1 | Quanto ondeggia la superficie da sola. |
SLOSH | script.js | 1 | Quanto sciaborda l’acqua se si scorre in fretta. |
TILT | script.js | 1 | Quanto la superficie si inclina verso il puntatore. |
BUBBLES | script.js | 12 | Quante bollicine salgono nell’acqua. |
Per l’apertura del sito di un laboratorio di vetro, di un’acqua minerale, di un bar o di una spa: una frase che si riempie mentre si legge, scorrendo.
La stessa animazione con le misure adattate: il disegno si stringe sulla larghezza e sull’altezza della pagina, la nota in alto a destra si nasconde e la goccia cade dove si tocca.
Niente si muove e lo scroll non è ammorbidito: la frase è già piena d’acqua, il pelo è fermo, niente bollicine né gocce, e la pagina compare in dissolvenza.
GSAP 3.15.0, ScrollTrigger 3.15.0, Lenis 1.3.26, Fraunces (font variabile) 5.3.0, Archivo (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 6,9 KB; le librerie: GSAP + ScrollTrigger 45 KB, Lenis 5,3 KB.
Provata il 24 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.