
The woven thread background
Backgrounds, Hover
NewFree
An animated background to put behind a heading or a section: a grid of thin crosses on solid black. The ones near the pointer turn towards it and stretch the arm that looks at it, like compass needles; every few seconds a wave runs across the grid and turns them a quarter on a spring, lighting them up orange for a moment. Minimal style.
A folder that runs on its own: index.html, style.css, script.js and the libraries from a CDN. The React and Vue tabs hold the same demo as a ready component, which switches its animations off when it leaves the page.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Norma</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/instrument-sans@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<!-- the background: a grid of thin crosses on a canvas behind the page; the crosses near the pointer turn and
stretch one arm towards it, and every few seconds a wave runs across the grid and turns them a quarter -->
<main class="pagina" data-pagina>
<canvas class="fondo" aria-hidden="true" data-fondo></canvas>
<header class="testa">
<p class="marchio">Norma</p>
<p class="testa__nota">Architecture & interiors</p>
</header>
<section class="eroe">
<div class="blocco" data-blocco>
<p class="occhiello" data-entra>A small studio for houses and rooms</p>
<h1 class="titolo">
<span class="riga"><span class="riga__dentro" data-riga>Quiet buildings,</span></span>
<span class="riga"><span class="riga__dentro" data-riga>drawn to the millimetre.</span></span>
</h1>
<div class="azione" data-entra>
<a class="pillola" href="#">
<span class="pillola__scritta" data-testo="See the projects">See the projects</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>Change values, colours and text with the controls and watch the animation respond live. Or write in the code yourself. Then download the folder with your changes.
21 values to change
With the Animorio connector, Claude Code takes it from here, guide included, and fits it into your project. Paste this request:
Take “The background of watching crosses” from Animorio and fit it into my siteOn a full-page canvas (devicePixelRatio capped at 2) a cross goes every PASSO pixels, centred. The heading block and the two header texts are measured, and for every cross the distance from a very rounded rectangle round each of them (a superellipse) is worked out: inside it disappears, on the edge it fades with a 60 px feather (26 for the header). The faded crosses are drawn with their transparency but always whole: shrunk, they would turn into dots.
Every cross has an angle that follows a spring (MOLLA), integrated by hand on GSAP's ticker with the step capped at 1/30 of a second, and always the short way round (the difference between angles brought back between −π and π). Within GUARDA pixels of the pointer the wanted angle turns towards it as much as the cross is close, and the arm that looks at it stretches by ALLUNGA times; further away it goes back to its own angle and size.
A repeating GSAP timeline lasts three times ONDA_OGNI: it holds the phase of the fake pointer's walk and three waves, each a number from 0 to 1 over TRAVERSA seconds. The wave's radius is that number times the page diagonal; every frame the crosses between the previous radius and the current one get an extra quarter turn on their resting angle, a push on their size and the light, which then drops with e^(−2.6·t).
All the normal crosses are a single path and a single stroke; then the faded ones, one by one with globalAlpha; then, on top, the ones touched by the wave in the accent colour, with the transparency of their light, so the orange fades over the grey instead of leaving a hole.
When the page opens a timeline brings the crosses to life from the middle to the edges with a bounce, and the heading lines rise with back.out while font-stretch goes from 100% to 84% and the weight from 360 to 500. After 2.4 seconds without the real pointer the point follows a Lissajous curve tied to the round's phase, on a soft spring. IntersectionObserver and visibilitychange stop the ticker and the round when the page is not visible.
| Name | File | Default | What it changes |
|---|---|---|---|
PASSO | script.js | 34 | The distance between crosses, in px (a little less on a phone). |
BRACCIO | script.js | 5 | The length of half an arm, in px. |
GUARDA | script.js | 230 | How far from the pointer the crosses feel it, in px. |
ALLUNGA | script.js | 1.6 | How much the arm looking at the pointer stretches (0 it does not). |
ONDA_OGNI | script.js | 5 | How many seconds between waves; three start in each round. |
TRAVERSA | script.js | 3.4 | How many seconds the wave takes to cross the whole page. |
MOLLA | script.js | [120, 11] | The spring of the crosses: how stiff and how damped. Less damping, more wobble after the wave. |
SPESSORE | script.js | 1 | The thickness of the crosses, in px. |
As the background of the first screen of an architecture or engineering practice, a typographer, a design studio, a technical conference or a developer product; in general behind a short heading when you want a precise, living black with the air of a drawing sheet. The colour of the crosses and the accent are set in the CSS.
The same animations with the sizes adapted: the crosses are a little closer, the heading smaller and the clean area follows it. The finger turns the crosses while it touches and drags; when it lifts the fake pointer comes back.
The grid is still, every cross upright: no waves, no needles towards the pointer, no birth from the middle. The heading, the small line and the pill fade in.
GSAP 3.15.0, Instrument Sans (font variabile) 5.3.0.
Compressed with gzip, the three demo files weigh 6.3 KB; the libraries: GSAP 28 KB.
Tested on 19 October 2026
Use it in your own projects and in your clients’ projects. Do not resell it or redistribute it as is. GSAP stays under its own Standard license. Full license.
With your account’s email and password.
or with your email
You’re signed in as .
With your account, you can download the zip of every animation and every pack, for free.