
Il titolo che si alza dalla linea
Transizioni, Testo, Immagini
NuovaGratis
Nello stile minimal: una stampa fotografica si colora in tre passate, come nelle stampanti a sublimazione. Una testina sottile scende tre volte sul cartoncino bianco e lascia il giallo, poi il magenta, poi il ciano, ogni inchiostro fuori registro di qualche pixel finché non scatta al suo posto; un’ultima passata trasparente la fa lucida.
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 photo in three passes</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/roboto-flex@5.3.0/full.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage" data-stage>
<header class="top">
<p class="mark">Dyeline</p>
<p class="note">Proof</p>
</header>
<!-- a print card: a head runs down it three times, laying yellow, then magenta, then cyan, each ink a beat out
of register until it settles; a last clear pass makes it shine. Click for the next print -->
<section class="press" data-press>
<figure class="card" data-card role="img">
<div class="print" data-print>
<canvas class="ink" data-ink="y" aria-hidden="true"></canvas>
<canvas class="ink" data-ink="m" aria-hidden="true"></canvas>
<canvas class="ink" data-ink="c" aria-hidden="true"></canvas>
<div class="sheen" aria-hidden="true"><i class="sheen__band" data-band></i><i class="sheen__satin" data-satin></i></div>
<i class="head" data-head aria-hidden="true"></i>
</div>
</figure>
<ol class="passes" data-passes aria-hidden="true">
<li class="pass">Yellow</li>
<li class="pass">Magenta</li>
<li class="pass">Cyan</li>
<li class="pass">Coat</li>
</ol>
<p class="cap" data-cap aria-live="polite"><span class="cap__title" data-title></span><span class="cap__meta" data-meta></span></p>
</section>
</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.
23 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 foto in tre passate» da Animorio e adattala al mio sitoLo script disegna la foto su una canvas e ne fa tre separazioni: il giallo tiene solo il canale blu (gli altri due a 255), il magenta solo il verde, il ciano solo il rosso. Sono tre canvas una sopra l’altra con mix-blend-mode: multiply sopra il bianco: moltiplicate, ridanno la foto esatta.
Ogni inchiostro ha un numero, r, da 0 a 1, che dice fin dove è stampato: la sua canvas è tagliata con clip-path: inset(0 0 (1 − r) × 100% 0). La testina è un elemento alto due pixel che scende con la stessa curva (sine.inOut) e nello stesso tempo, così il bordo dell’inchiostro è sempre esattamente sotto di lei. Il colore della testina è quello che sta stampando.
Ogni inchiostro parte spostato di qualche pixel (OFF_REGISTER, in direzioni diverse per magenta e ciano), e verso la fine della passata torna a zero con elastic.out: sui bordi si vede un filo di colore che scatta al suo posto, come nelle prove di stampa progressive.
L’ultima passata ha la testina grigia e una fascia di luce bianca in modalità screen che la segue appena sopra; intanto un riflesso diagonale molto leggero cresce e resta sulla stampa finita, come la vernice lucida delle stampe a sublimazione.
Yellow, Magenta, Cyan e Coat sono in Roboto Flex, carattere variabile con gli assi wght e wdth. La parola della passata in corso va a peso 760 con elastic.out e si stringe a larghezza 92; le altre tornano a 300 e 118, grigie. Tutta la regia è una timeline GSAP sola per ogni stampa.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
PRINTS | script.js | 3 stampe | Le stampe, una dopo l’altra: il titolo e la riga piccola sotto il cartoncino (le foto le disegna lo script). |
PASS | script.js | 1.25 | I secondi che la testina impiega a scendere lungo la stampa. |
GAP_BETWEEN | script.js | 0.35 | I secondi fra una passata e la successiva. |
OFF_REGISTER | script.js | 3 | Di quanti pixel ogni inchiostro arriva fuori registro prima di scattare al suo posto (0 = sempre a registro). |
HOLD | script.js | 2.2 | I secondi che la stampa finita resta prima della successiva. |
Per chi stampa o vende stampe: un laboratorio fotografico online, la pagina di un servizio di stampa su carta o cartolina, la scheda di una stampa in edizione limitata, il momento in cui un ordine «va in stampa». Anche come caricamento di una foto in un portfolio.
La stessa animazione con le misure adattate: il cartoncino è largo quasi quanto lo schermo e le quattro parole stanno in fila sotto, più piccole. Un tocco sulla stampa passa alla prossima.
Niente scende e niente scivola: le stampe sono già finite e una lascia il posto all’altra con una dissolvenza.
GSAP 3.15.0, Roboto Flex (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 7,8 KB; le librerie: GSAP 28 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.