
Il caricamento che diventa marchio
Transizioni, SVG, Testo
NuovaGratis
Un cambio di pagina nello stile minimal: al clic tutta la pagina viene selezionata come in un programma di scrittura, riga per riga, e le parole diventano bianche sull’evidenziatura blu. Le righe si chiudono in un foglio blu che inghiotte il testo, il foglio si riapre sulle righe della pagina nuova, già selezionate, e la selezione le lascia andare una a una; alla fine il cursore lampeggia due volte.
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 select-all transition</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/newsreader@5.3.0/opsz.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="stage" data-stage>
<!-- the first note: every line of text can be selected, and the selection becomes the curtain -->
<section class="page page--a is-on" data-page="a" aria-label="Cutting">
<header class="bar">
<span class="brand" data-sel>Margin</span>
<nav class="nav" aria-label="Notes">
<a href="#cutting" aria-current="page" data-sel>Cutting</a>
<a href="#white-space" data-go="b" data-sel>White space</a>
</nav>
</header>
<article class="note">
<p class="label" data-sel>Notes on writing</p>
<h1 class="title" data-sel data-title>Cut the second sentence.</h1>
<p class="body" data-sel>Most paragraphs say their thing once, then say it again to be sure. Find the sentence that repeats the first one and take it out. The page gets lighter, and the reader trusts you more.</p>
<a class="go" href="#white-space" data-go="b" data-autoclic data-sel>
<span class="go__t">Next note</span>
<svg class="go__arrow" viewBox="0 0 26 12" aria-hidden="true"><path d="M1 6h22M18.5 1.5 23.5 6l-5 4.5"/></svg>
</a>
</article>
<footer class="foot">
<span data-sel>A letter about writing</span>
<span data-sel>Every other Sunday</span>
</footer>
</section>
<!-- the second note, dark -->
<section class="page page--b" data-page="b" aria-label="White space" aria-hidden="true">
<header class="bar">
<span class="brand" data-sel>Margin</span>
<nav class="nav" aria-label="Notes">
<a href="#cutting" data-go="a" data-sel>Cutting</a>
<a href="#white-space" aria-current="page" data-sel>White space</a>
</nav>
</header>
<article class="note">
<p class="label" data-sel>Notes on writing</p>
<h2 class="title" data-sel data-title>Leave room around it.</h2>
<p class="body" data-sel>A good line needs air the way a picture needs a wall. Give the sentence that matters its own paragraph, wide margins and nothing beside it. Space is how a page raises its voice.</p>
<a class="go go--back" href="#cutting" data-go="a" data-autoclic data-sel>
<svg class="go__arrow" viewBox="0 0 26 12" aria-hidden="true"><path d="M25 6H3M7.5 1.5 2.5 6l5 4.5"/></svg>
<span class="go__t">Back to cutting</span>
</a>
</article>
<footer class="foot">
<span data-sel>A letter about writing</span>
<span data-sel>Every other Sunday</span>
</footer>
</section>
<!-- the text cursor; the highlights of the selection are built by the script inside each page, under its text -->
<div class="caret" data-caret aria-hidden="true"></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.
32 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 della selezione» da Animorio e adattala al mio sitoOgni testo segnato con data-sel è diviso in parole (uno span per parola, gli spazi restano testo), e le righe si trovano raggruppando le parole che stanno alla stessa altezza: così sono le righe come le ha impaginate il browser, che vanno a capo dove vogliono. Ogni riga ha la sua evidenziatura, un div blu nella stessa pagina, sotto il testo (z-index -1 dentro una pagina con isolation: isolate). Le righe alla stessa altezza (il marchio e il menu, i due capi del piede) fanno una fila sola.
Ogni fila possiede una fascia dello schermo, larga da bordo a bordo e alta da metà strada alla fila di sopra a metà strada alla fila di sotto; la prima parte dal bordo alto e l’ultima arriva in fondo. Chiudersi vuol dire passare dal rettangolo della riga a quello della sua fascia: le fasce, sovrapposte di un pixel, coprono tutto senza lasciare righine. La pagina nuova parte con le sue fasce chiuse, quindi lo scambio sotto il foglio non si vede.
La timeline muove solo quattro numeri da 0 a 1 (selezione, chiusura, apertura, rilascio) con ease none. Ogni riga ricava da lì il suo tempo con il suo posto nell’ordine (dalla riga del link verso fuori, in ordine di lettura, dal basso in su) e lo passa per la sua curva: power2.out per la selezione, power3.inOut per la chiusura, power4.inOut per l’apertura. Le misure si rifanno a ogni ridimensionamento e il disegno le rilegge a ogni fotogramma: se la finestra cambia a metà, il testo va a capo in un altro punto e le fasce seguono le righe nuove.
Una parola è selezionata quando il suo centro sta sotto l’evidenziatura della sua riga: allora prende il bianco, e mentre la riga si chiude il bianco si mescola al blu con color-mix in proporzione alla chiusura, finché la parola sparisce nel foglio. Le frecce dei link sono trattate come parole, così il foglio inghiotte anche loro. L’hover del link fa lo stesso gesto in piccolo: un’evidenziatura che corre sotto le sue parole.
Alla fine il cursore, una barretta blu di due pixel alta quanto la riga, si mette dopo l’ultima riga del titolo e lampeggia BLINKS volte con dei set nella timeline (così il video dell’anteprima lo vede tutto). Al telefono le righe sono più corte e più numerose, e le fasce più sottili. Con il movimento ridotto le due note si scambiano in dissolvenza.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
SELECT | script.js | 0.75 | I secondi che la selezione impiega a correre su tutta la pagina. |
CLOSE | script.js | 0.6 | I secondi che le evidenziature impiegano a chiudersi in un foglio solo. |
OPEN | script.js | 0.7 | I secondi che il foglio impiega a riaprirsi sulle righe della pagina nuova. |
LETGO | script.js | 0.7 | I secondi che la selezione impiega a lasciare andare le righe nuove. |
BLINKS | script.js | 2 | Quante volte lampeggia il cursore alla fine: 0 = niente cursore. |
SPEED | script.js | 1 | La velocità di tutto: 2 è il doppio, 0.5 la metà. |
Per passare da un articolo all’altro in un sito fatto di testo: un blog, una newsletter, la rivista di uno studio di scrittura o di traduzione, la documentazione di un editor di testo, il sito di un programma per scrivere. Va bene dove le pagine sono soprattutto parole, perché è il testo stesso a fare da sipario.
La stessa transizione: il testo va a capo più spesso, quindi le righe sono di più e le fasce più sottili, e la selezione, la chiusura e il rilascio seguono le righe come le impagina il telefono.
Niente si muove: la nota nuova compare in dissolvenza sopra la vecchia, senza selezione né cursore.
GSAP 3.15.0, Newsreader (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 7,6 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.