
La parola di vetro
WebGL, 3D, Scroll, Testo
Gratis
Un nastro di carta chiuso con una mezza torsione, un nastro di Möbius, nello stile minimal: la parola «INSIDE» ci gira sopra piano e dopo un giro torna davanti sull’altra faccia, dove si legge «OUTSIDE» nel colore d’accento. Passando il puntatore (o la rotella, o un dito) il nastro corre più forte nel verso della mano, con una molla; lasciato, rallenta, va oltre il suo passo di un soffio e si assesta.
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 ribbon with one side</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
<script type="importmap">
{ "imports": {
"three": "https://cdn.jsdelivr.net/npm/three@0.178.0/build/three.module.min.js"
} }
</script>
</head>
<body>
<!-- a thin paper ribbon closed with half a twist, a Moebius strip: it has one side and one edge. A word printed on
it runs round and round; after one lap it comes back on the other face, where a second word waits in the
accent. The script draws the ribbon and the letters on the canvas -->
<main class="stage" data-stage>
<canvas class="canvas" data-canvas aria-hidden="true"></canvas>
<h1 class="sr" data-sr>Inside, outside: a ribbon with one side.</h1>
<p class="hint" data-hint>Move across the ribbon</p>
</main>
<script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/gsap.min.js"></script>
<script type="module" 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.
14 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 «Il nastro con un lato solo» da Animorio e adattala al mio sitoLa linea in mezzo al nastro è un cerchio sul pavimento; di traverso il nastro ruota di mezzo giro mentre fa un giro intero: la direzione della larghezza è cos(u/2) verso l’alto più sin(u/2) verso l’esterno. Dopo un giro la stessa carta è capovolta e guarda dentro. La mesh percorre il nastro due volte (u da 0 a 4π): il primo giro è una faccia della carta, il secondo l’altra, ognuna disegnata solo dal suo lato (FrontSide). Così ogni punto è disegnato una volta per faccia, e la stessa formula dà anche le normali per la luce.
Un canvas solo tiene le due parole: la prima nel canale rosso, la seconda nel verde, nello stesso tratto di carta. Il canvas copre solo il tratto dove sta la parola (una copia di mezzo giro), così ogni pixel è usato per le lettere; nel nastro la carta non è quadrata e le lettere si disegnano stringendo l’asse x del giusto fattore. Ogni lettera ha il suo stato (quanto si vede, quanto pesa, quanto sta sopra il suo posto) e si disegna da sola col suo peso del carattere variabile Archivo; le posizioni si misurano sulla parola intera, per tenere la crenatura.
Nel frammento T = u − flusso dice quale punto della stampa sta lì: aumentando il flusso, la stampa scorre lungo il nastro senza toccare la geometria. Il giro (T modulo 4π) sceglie il canale e il colore: inchiostro sulla prima faccia, accento sull’altra. Il canvas si legge con textureGrad e le derivate di T, che non saltano dove una copia finisce e comincia l’altra. Le tacche e il filo del bordo sono disegnati nello shader con fwidth: restano di un pixel, e quando il nastro si mette di taglio il bordo diventa da solo una linea sottile.
La velocità della mano (quante larghezze di pagina percorre il puntatore in un secondo, smussata e che si spegne da sola) si somma al passo del nastro; la velocità vera la insegue con una molla smorzata, integrata a passi di 1/240 di secondo. BOUNCE decide lo smorzamento: a 0 si ferma senza superare il passo, a 1 lo supera e torna. L’anello si inclina quanto la velocità è lontana dal suo passo, con una molla poco smorzata che lo fa oscillare quando si raddrizza; il peso delle lettere cresce con la stessa distanza, e il canvas si ridisegna solo quando il peso cambia di almeno 4.
Una timeline GSAP scopre la carta lungo due giri (un uniform che taglia il nastro dove u supera il valore), gira l’anello di un quarto con un back.out e lo ingrandisce dal 94% con un elastico leggero. Le lettere arrivano con tre tween sfalsati di 0,07 s: la comparsa, la discesa con un back.out e il peso da 200 a quello scelto. Poi il passo sale da zero con un power2.inOut. Il ciclo di ogni fotogramma sta nel ticker di GSAP, così il banco lo può rallentare e fermare.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
FRONT_WORD | script.js | 'INSIDE' | La parola sul diritto del nastro, in inchiostro. |
BACK_WORD | script.js | 'OUTSIDE' | La parola che torna davanti sull’altra faccia, nel colore d’accento. |
LAP | script.js | 12 | Quanti secondi impiega una parola a fare un giro del nastro, da ferma. |
PUSH | script.js | 1.6 | Quanto il puntatore, la rotella e il dito fanno correre il nastro: 0 niente. |
BOUNCE | script.js | 0.4 | Quanto la velocità va oltre il suo passo quando lasci: 0 niente, 1 molto. |
WEIGHT | script.js | 480 | Il peso delle lettere da ferme, da 200 a 800; correndo diventano più pesanti. |
BAND | script.js | 0.44 | La larghezza del nastro, in parti del raggio dell’anello. |
TILT | script.js | 24 | Quanto dall’alto si guarda l’anello, in gradi. |
Per l’apertura di un portfolio, di uno studio o di un marchio che gioca su due parole opposte (dentro e fuori, prima e dopo, giorno e notte): il nastro le tiene insieme su un lato solo. Anche per una pagina di un evento o di una mostra con un titolo di una o due parole, o come oggetto da guardare a metà di una pagina lunga.
Lo stesso anello, misurato perché stia in nove decimi della larghezza; un dito trascinato sopra fa correre il nastro come il puntatore, e lasciandolo si assesta. Il suggerimento in basso dice «Drag» invece di «Move».
Niente gira e niente scorre: il nastro compare in dissolvenza già disegnato, con «INSIDE» davanti e «OUTSIDE» dietro. Ogni quattro secondi svanisce e ricompare mostrando davanti l’altra faccia.
Three.js 0.178.0, GSAP 3.15.0, Archivo (font variabile, assi wdth e wght) 5.3.0.
Compressi con gzip, i tre file della demo pesano 8,7 KB; le librerie: GSAP 28 KB, Three.js 174 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.