
Il caricamento che diventa marchio
Transizioni, SVG, Testo
NuovaGratis
Un cambio di pagina a clic in stile minimal: un foglio nero sale dal basso col bordo che si gonfia come una stoffa spinta da sotto, si appiattisce arrivando, mostra il nome della pagina dopo che si allarga e se ne va in alto col bordo di sotto curvo al contrario, scoprendo la pagina nuova.
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 curved-edge transition</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/archivo@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage" data-stage>
<!-- the first page -->
<section class="page page--a is-on" data-page="a" aria-label="Work">
<header class="bar">
<span class="brand">Orrin</span>
<nav class="nav" aria-label="Pages">
<a href="#work" aria-current="page">Work</a>
<a href="#studio" data-go="b">Studio</a>
</nav>
</header>
<div class="hero">
<p class="kicker" data-rise>Architecture and interiors</p>
<h1 class="headline">
<span class="line"><span class="line__in" data-line>Rooms that</span></span>
<span class="line"><span class="line__in" data-line>hold the light.</span></span>
</h1>
<a class="go go--next" href="#studio" data-go="b" data-autoclic data-rise>
<span class="go__text">Meet the studio</span>
<span class="go__arrow" aria-hidden="true"><span class="go__shaft"></span><svg class="go__head" viewBox="0 0 8 12"><path d="M1.5 1.5 6.5 6l-5 4.5"/></svg></span>
</a>
</div>
<footer class="foot" data-rise>
<span>Houses, shops and quiet rooms</span>
<span>Since 2011</span>
</footer>
</section>
<!-- the second page -->
<section class="page page--b" data-page="b" aria-label="Studio" aria-hidden="true">
<header class="bar">
<span class="brand">Orrin</span>
<nav class="nav" aria-label="Pages">
<a href="#work" data-go="a">Work</a>
<a href="#studio" aria-current="page">Studio</a>
</nav>
</header>
<div class="hero">
<p class="kicker" data-rise>The studio</p>
<h2 class="headline">
<span class="line"><span class="line__in" data-line>Four people,</span></span>
<span class="line"><span class="line__in" data-line>one long table.</span></span>
</h2>
<a class="go go--back" href="#work" data-go="a" data-autoclic data-rise>
<span class="go__arrow" aria-hidden="true"><svg class="go__head" viewBox="0 0 8 12"><path d="M6.5 1.5 1.5 6l5 4.5"/></svg><span class="go__shaft"></span></span>
<span class="go__text">Back to the work</span>
</a>
</div>
<footer class="foot" data-rise>
<span>A model shop facing north</span>
<span>Visits by appointment</span>
</footer>
</section>
<!-- the panel: a black sheet drawn as one path, with a hairline on its leading edge, and the name of the next page -->
<div class="curtain" data-curtain aria-hidden="true">
<svg class="curtain__svg" data-svg preserveAspectRatio="none">
<path class="curtain__sheet" data-sheet d="" />
<path class="curtain__edge" data-edge d="" />
</svg>
<p class="curtain__word"><span class="curtain__in" data-word>Studio</span></p>
</div>
</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.
34 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 transizione col bordo curvo» da Animorio e adattala al mio sitoIl foglio nero è un solo path di un SVG grande quanto la pagina, col viewBox in pixel veri. Lo descrivono quattro numeri in quote dell’altezza: dove stanno ai lati il bordo di sopra e quello di sotto, e quanto si gonfia il centro di ognuno (quello di sopra verso l’alto, quello di sotto verso il basso). Ogni bordo è una curva quadratica Q che va da un lato all’altro con il punto di controllo al centro, spostato del doppio del gonfiore: così il centro della curva cade proprio di quanto deve.
GSAP non anima il path: anima l’oggetto coi quattro numeri, e a ogni aggiornamento una funzione sola rifà l’attributo d dalle misure della pagina in quel momento. Al resize si rileggono larghezza e altezza e si ridisegna subito, quindi la curva resta giusta anche se la finestra cambia a metà del viaggio. Il gonfiore si misura sull’altezza, ma mai oltre nove decimi della larghezza: su un telefono alto la curva sarebbe troppo ripida.
Mentre il foglio sale con power3.inOut, il bordo davanti si gonfia con power2.out nella prima metà del viaggio, quando il foglio accelera, e si appiattisce nella seconda, quando frena; arriva un paio di pixel oltre il piano (il centro un filo indietro rispetto ai lati) e torna dritto con elastic.out. In discesa la stessa cosa vale per il bordo di sotto, che si gonfia verso il basso: il centro resta indietro come una stoffa che si stacca.
Il nome della pagina dopo sta in una fessura al centro del foglio: sale con expo.out e intanto, per tutta la sosta, l’asse della larghezza di Archivo va da 62% a 125% e il peso da 300 a 620; poi esce in alto con power3.in. A foglio fermo la pagina vecchia si spegne e quella nuova si accende sotto, con le righe del titolo già abbassate nella loro fessura e larghe.
Quando il foglio ha fatto un terzo della strada in uscita, le righe salgono una dopo l’altra con expo.out, si stringono da 104% a 84% e prendono peso; l’occhiello, il link e il piede arrivano subito dopo su un back.out. Con il movimento ridotto non c’è foglio: le due pagine si scambiano in dissolvenza.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
RISE | script.js | 0.9 | I secondi che il foglio impiega a coprire la pagina. |
BULGE | script.js | 0.16 | Quanto corre avanti il centro del bordo, in quote dell’altezza della pagina: 0 è un bordo dritto, 0.3 una cupola. |
HOLD | script.js | 0.35 | I secondi che il nome della pagina dopo resta sul nero. |
LEAVE | script.js | 0.95 | I secondi che il foglio impiega ad andarsene scoprendo la pagina nuova. |
OVERSHOOT | script.js | 2 | Di quanti pixel il bordo va oltre il piano prima di assestarsi: 0 si ferma e basta. |
STAGGER | script.js | 0.08 | I secondi fra una riga della pagina nuova e la successiva. |
SPEED | script.js | 1 | La velocità di tutto: 2 è il doppio. |
Per passare da una pagina all’altra in un sito sobrio dove conta la tipografia: lo studio di un architetto o di un designer, un portfolio, un’agenzia, un marchio di arredamento; fra la home e una sezione, o fra un progetto e il successivo. Il nome sul nero dice dove si sta andando mentre la pagina si carica.
La stessa transizione con le misure adattate: il gonfiore del bordo si misura anche sulla larghezza, così su uno schermo alto la curva resta morbida; il titolo va su due righe più piccole e il nome sul nero si rimpicciolisce con lo schermo. Un tocco sul link fa il viaggio e un altro lo rifà all’indietro.
Niente si sposta e il foglio non c’è: la pagina vecchia svanisce mentre compare la nuova, con tutto già al suo posto.
GSAP 3.15.0, Archivo (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 6,1 KB; le librerie: GSAP 28 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.