
Il titolo che si alza dalla linea
Transizioni, Testo, Immagini
NuovaGratis
Un paesaggio di montagna disegnato a righe verticali, nello stile minimal: ogni cella della griglia ha una riga larga quanto è scura. Il tasto cambia stagione: i livelli dell’estate cancellano le righe colonna dopo colonna e quelli dell’inverno le fanno crescere dal basso, finché resta la montagna con la neve vuota fra le righe.
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>Hollin, seasons in lines</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/anybody@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- two landscapes drawn in grey on hidden canvases, shown as vertical lines: each cell of the grid holds one line
as wide as the cell is dark. The button swaps the season: one landscape thins out to nothing, the other grows in -->
<main class="pagina" data-pagina>
<header class="testa">
<p class="marchio">Hollin</p>
<p class="nota">A mountain hotel, open all year</p>
</header>
<figure class="palco" data-palco>
<canvas class="tela" data-tela aria-label="A mountain landscape drawn in vertical lines"></canvas>
<span class="filo" data-filo aria-hidden="true"></span>
</figure>
<footer class="piede">
<h1 class="stagione" aria-live="polite">
<span class="stagione__parola is-on" data-parola="summer">Summer</span>
<span class="stagione__parola" data-parola="winter" aria-hidden="true">Winter</span>
</h1>
<button class="pillola" type="button" data-cambia data-autoclic>
<span class="pillola__scritta" data-scritta data-testo="See it in winter">See it in winter</span>
<svg class="pillola__freccia" viewBox="0 0 16 16" aria-hidden="true"><path d="M2.5 8h10.5M9 3.8 13.2 8 9 12.2" /></svg>
</button>
</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/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.
21 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 «Le stagioni a righe» da Animorio e adattala al mio sitoL’estate e l’inverno si disegnano in scala di grigi su due canvas nascosti, con forme semplici: crinali fatti di somme di seni, sempre uguali, abeti a triangolo, l’hotel a gradoni con le finestre, il cielo con un gradiente. Il canvas nascosto è tre volte più fitto della griglia, e di ogni cella si legge il grigio del pixel al centro con getImageData. Si rifà solo quando cambia la misura del palco (ResizeObserver), anche a metà di un cambio.
Prima i livelli, come in un programma di fotografia: il grigio diventa (grigio meno nero) diviso (bianco meno nero), tenuto fra 0 e 1. Poi la larghezza della riga: (1 meno la luce) per (MAX_W meno MIN_W) più MIN_W, in frazioni della cella. Con MIN_W a -0,02 il bianco non disegna niente e con MAX_W a 1,02 le righe nere si toccano. Tutte le righe delle due stagioni vanno in un solo path di rettangoli e un solo fill.
Una stagione nascosta ha i livelli HIDDEN, 0 e 1: ogni grigio sopra lo zero diventa bianco e le righe spariscono. Il cambio porta i livelli della stagione che arriva ai suoi (SUMMER o WINTER) e quelli dell’altra a HIDDEN. L’inverno usa 25 e 150, cioè più contrasto: tutto quello che è più chiaro di 150, la neve, resta vuoto.
Un numero solo, p, va da 0 a 1 in DURATION secondi; ogni colonna ha il suo tempo, p per (1 più STAGGER) meno STAGGER per la sua posizione, così il cambio corre da sinistra a destra. Ogni colonna interpola i livelli con la curva InOut (0.76, 0, 0.24, 1); le righe che arrivano crescono dal fondo della cella con power3.out, quelle che se ne vanno si abbassano con power2.in. Il filo sabbia segue il fronte, poi si ritira verso destra, e le lettere della parola cambiano larghezza e peso con gli assi di Anybody.
Niente onda e niente lettere in volo: il paesaggio sparisce in dissolvenza, si ridisegna nella stagione nuova e torna; la parola cambia con una dissolvenza.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
COLS | script.js | 100 | Le colonne della griglia, cioè quante righe verticali (sul telefono il 60%). |
ROWS | script.js | 100 | Le righe della griglia: più sono, più il disegno è fine dall’alto in basso. |
MIN_W | script.js | -0.02 | La larghezza della riga dove la cella è bianca, in frazioni della cella: sotto zero il bianco resta vuoto. |
MAX_W | script.js | 1.02 | La larghezza della riga dove la cella è nera: oltre 1 le righe si toccano. |
SUMMER | script.js | [0, 255] | I livelli dell’estate: punto del nero e punto del bianco. |
WINTER | script.js | [25, 150] | I livelli dell’inverno: più contrasto, la neve resta vuota. |
HIDDEN | script.js | [0, 1] | I livelli di una stagione nascosta: ogni grigio diventa bianco. |
DURATION | script.js | 1.2 | I secondi di un cambio di stagione. |
STAGGER | script.js | 0.6 | Quanto il cambio corre da sinistra a destra: 0 tutte le colonne insieme. |
Per il sito di un hotel, di un rifugio o di una casa vacanze che cambia con le stagioni, la pagina di una località, una prima pagina in bianco e nero che deve avere carattere senza usare foto.
La stessa animazione, col palco alto e stretto: le colonne sono il 60%, il paesaggio si ridisegna per la nuova forma e hotel e abeti si misurano sul lato più corto. Un tocco cambia stagione.
Il paesaggio cambia stagione in dissolvenza, senza l’onda delle colonne, e la parola compare e scompare senza muoversi.
GSAP 3.15.0, CustomEase 3.15.0, Anybody (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 7,3 KB; le librerie: GSAP + CustomEase 31 KB.
Provata il 21 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.