
Lo sfondo di creste in fila
Sfondi, WebGL, Hover
NuovaGratis
Uno sfondo animato da mettere dietro a un titolo o a una sezione: una nebbia morbida di tre tinte, albicocca, pervinca e burro, che si muove piano su una carta bianco caldo, con una grana fine da pellicola. Un solo shader WebGL piccolo; dietro al titolo la nebbia si alleggerisce e la nuvola pervinca si sporge verso il puntatore. Stile minimal.
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>Hush</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>
<!-- the background: a soft fog of three tints drawn by one small WebGL shader, with a fine film grain; the tints
drift slowly and the nearest one leans towards the pointer -->
<main class="pagina" data-pagina>
<canvas class="fondo" aria-hidden="true" data-fondo></canvas>
<header class="testa">
<p class="marchio">hush</p>
<p class="testa__nota">A sleep app</p>
</header>
<section class="eroe">
<div class="blocco" data-blocco>
<p class="occhiello" data-entra>For light sleepers and long days</p>
<h1 class="titolo" data-titolo>Let the evening go quiet.</h1>
<div class="azione" data-entra>
<a class="pillola" href="#">
<span class="pillola__scritta" data-testo="Get the app">Get the app</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>
</a>
</div>
</div>
</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.
19 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 «Lo sfondo di nebbia colorata» da Animorio e adattala al mio sitoUn canvas a tutta pagina con WebGL e un solo triangolo che copre lo schermo; la risoluzione è limitata a devicePixelRatio 1,5, che per una nebbia morbida basta. Lo shader parte dal colore della carta e ci mescola sopra tre nuvole, ognuna una gaussiana e^(−d²/r²) nella sua tinta, con la forza DENSA.
Prima di misurare la distanza dalle nuvole il punto si sposta di STORTA pixel lungo due onde annidate (un seno dentro l'altro) che scorrono con la fase: le nuvole restano tonde da lontano ma i bordi si piegano e si sfrangiano. Tutto è fatto di seni della fase, quindi a ogni giro torna identico.
I centri delle tre nuvole si calcolano in JavaScript a ogni fotogramma: ognuno gira su un'ellisse con giri interi per ogni giro della fase, che è una timeline GSAP in ripetizione lunga GIRO secondi. Il centro della nuvola pervinca si sposta verso il puntatore di SEGUE volte la distanza, seguendolo su una molla lenta e frenata.
Si misura il blocco del titolo e lo shader riceve il suo centro e i suoi raggi: dentro, la forza della nebbia scende di CALMA, con un passaggio morbido (smoothstep) verso fuori. Alla fine si aggiunge una grana ferma, un hash dalle coordinate del pixel per GRANA: si vede come carta fotografica e toglie le righe che le sfumature lunghe fanno sugli schermi a 8 bit.
Le tinte stanno in :root e si leggono col getComputedStyle; un canvas di un pixel le traduce in rgb, così vanno bene in qualunque forma e il Playground le cambia dal vivo. Una timeline porta la nebbia da 0 a 1 con power2.inOut e fa affiorare le parole (opacità, blur da 10 px a 0, font-stretch da 118% a 100%, peso da 380 a 520, back.out). Senza WebGL resta una nebbia ferma di sfumature CSS; IntersectionObserver e visibilitychange fermano tutto quando la pagina non si vede.
| Nome | File | Di partenza | Cosa cambia |
|---|---|---|---|
GIRO | script.js | 22 | In quanti secondi la nebbia fa un giro intero e torna uguale. |
NUVOLE | script.js | 0.4 | Quanto sono grandi le nuvole di colore, rispetto alla pagina. |
DENSA | script.js | 0.85 | Quanto è densa la nebbia, da 0 (solo carta) a 1. |
STORTA | script.js | 70 | Quanto le onde storcono la nebbia, in px: 0 nuvole tonde. |
GRANA | script.js | 0.035 | Quanta grana da pellicola: 0 la toglie. |
CALMA | script.js | 0.45 | Quanto si alleggerisce la nebbia dietro al titolo, da 0 a 1. |
SEGUE | script.js | 0.35 | Quanto la nuvola pervinca si sporge verso il puntatore, da 0 a 1. |
Come fondo della prima schermata di un'app di benessere, sonno o meditazione, di un marchio di cosmetici o profumi, di una pagina di presentazione di un prodotto digitale; in generale dietro a un titolo corto quando si vuole un colore che vive senza disegni. Le tre tinte e la carta si cambiano nel CSS.
La stessa nebbia a misure adattate: le nuvole sono grandi in proporzione alla pagina alta e stretta, il titolo va su due righe. Il dito tira a sé la nuvola pervinca mentre tocca e trascina.
La nebbia è ferma, già salita, nella posizione d'inizio del giro: niente orbite e niente puntatore. Il titolo, la riga piccola e la pillola compaiono in dissolvenza, senza sfocatura.
GSAP 3.15.0, Mona Sans (font variabile) 5.3.0.
Compressi con gzip, i tre file della demo pesano 6,4 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.