Vai al contenuto
animorio
EN
Torna alla libreria

Il velo che brucia

Un velo arancio copre la pagina mentre il numero sale a cento, poi prende fuoco dal basso: un fronte frastagliato con la brace sul bordo, disegnato da uno shader.

Transizioni, WebGLGSAP, WebGLImpegnativaGratis

Il codice

Una cartella che funziona da sola: index.html, style.css, script.js e le librerie da CDN.

<!doctype html>
<html lang="it">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>Il velo che brucia</title>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/mona-sans@5.3.0/standard.css">
  <link rel="stylesheet" href="style.css">
</head>
<body>
  <!-- la pagina vera, sotto il velo -->
  <main class="pagina">
    <p class="sopra">Benvenuto</p>
    <h1 class="titolo">
      <span class="riga"><span>Il sito compare</span></span>
      <span class="riga"><span>dietro la carta</span></span>
      <span class="riga"><span>che brucia.</span></span>
    </h1>
    <p class="sotto">Il velo è un solo triangolo a tutto schermo: il fronte del fuoco lo disegna lo shader, con un rumore frattale che sale dal basso.</p>
  </main>

  <!-- il velo: in WebGL se c'è, altrimenti un div che si ritira -->
  <div class="velo" aria-hidden="true">
    <canvas class="velo__tela"></canvas>
    <div class="velo__piano"></div>
    <div class="conta">
      <p class="conta__numero"><span class="conta__cifre">000</span></p>
      <p class="conta__sotto">caricamento</p>
    </div>
  </div>

  <button type="button" class="rivedi" hidden>Rivedi il fuoco</button>

  <script src="https://cdn.jsdelivr.net/npm/gsap@3.15.0/dist/gsap.min.js"></script>
  <script src="script.js"></script>
</body>
</html>

Cosa fa

La pagina è coperta da un velo arancio con un grande numero che sale da zero a cento. A cento il numero sparisce e il velo comincia a bruciare dal basso: il bordo del fuoco non è una riga dritta ma un fronte frastagliato che sale ondeggiando, con una fascia scura di carta bruciata, una linea di brace accesa e, sotto, la pagina che compare. Quando il fuoco arriva in cima il velo non c'è più e il titolo sale dalla sua maschera.

Come funziona

Un triangolo per tutto lo schermo

Il velo è una tela WebGL con un solo triangolo più grande dello schermo (vertici -1,-1 / 3,-1 / -1,3): tre vertici e nessuna libreria. Tutto il lavoro lo fa il fragment shader, un pixel alla volta.

Il fronte frastagliato

Un rumore frattale (cinque ottave di value noise) sposta la linea del fronte: d = y + (rumore - 0.5) * 0.55 - fronte. Dove d è negativo il velo è bruciato e il pixel è trasparente. Il rumore scorre verso l'alto col tempo: le fiammelle salgono.

Bruciatura, brace, nucleo

Tre smoothstep sulla stessa distanza d: una fascia larga che scurisce il velo, una più stretta del colore della brace che trema col tempo, una sottilissima quasi bianca. Sotto il bordo un alone arancio si posa sulla pagina.

Il tempo lo decide GSAP

Una timeline porta il numero a cento e poi uFronte da 0 a 1; il ticker di GSAP disegna la tela solo finché serve. Senza WebGL lo stesso tempo ritira un div con clip-path.

Valori da cambiare

NomeFileDi partenzaCosa cambia
FUOCOscript.js2.6Secondi perché il fronte attraversi lo schermo. Sotto i due secondi sembra un taglio, non un fuoco.
ONDEscript.js3.0Quanto è frastagliato il fronte: più alto, più fiammelle piccole.
VELO / BRACEscript.jsarancio / rosso fuocoI colori del velo e della brace, in RGB da 0 a 1. Il velo va uguale a --velo nel CSS, che serve senza WebGL.
CONTEGGIOscript.js2.2Secondi del numero che sale a cento.

Quando usarla

Per l'ingresso di un sito che vuole un momento teatrale alla prima visita: un evento, un'etichetta, un portfolio. Una volta sola, poi ricordati che l'hai già fatto vedere.

Sul telefono

Funziona uguale; la tela si disegna al massimo a 1,5 volte i pixel dello schermo, così anche i telefoni meno potenti tengono il passo.

Con il movimento ridotto

Niente velo e niente numero: la pagina è subito lì.

Trappole

  • Con premultipliedAlpha (il valore di serie) il colore che esce dallo shader va moltiplicato per l'alfa: col solo alfa a zero ai bordi resta un alone chiaro.
  • Fai partire il fronte sotto lo schermo e finire sopra (qui da -0.4 a 1.4): il rumore sposta la linea di mezzo schermo, e senza margine all'inizio si vede già un buco.
  • La funzione caso() con il seno perde precisione in mediump: chiedi highp quando c'è, altrimenti su alcuni telefoni il rumore diventa a quadretti.
  • Finito il fuoco togli la tela di mezzo e smetti di disegnare: uno shader a tutto schermo che gira per niente scalda il telefono.

Librerie

GSAP 3.15.0, Mona Sans (font variabile) 5.3.0.

Peso: 11 KB dei nostri file.

Collaudo

Provata il 26 settembre 2026

  • Computer: Fatto
  • Telefono: Fatto
  • Movimento ridotto: Fatto
  • Safari su iPhone: Fatto

Licenza d’uso

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.

Tutte le animazioni