
Projects in a row with a ring
Scroll, Images, Text
NewFree
A logo intro in a glass tank full of water: drops of ink fall in with a crater and rings, sink in curls and filaments, then swirl together until they draw the logo, sharp in the middle and still fluid at the edges; a last drop in another colour tints part of it. In the Playground you type your own name or upload your own logo.
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>The ink-in-water logo</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/fraunces@5.3.0/index.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="scena">
<!-- the stage: the script paints the glass tank, the water, the drops and the ink on this canvas -->
<canvas class="palco" data-stage role="img" aria-label="Nerida"></canvas>
<p class="nota">Click or tap to see it again</p>
</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.
23 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 ink-in-water logo” from Animorio and fit it into my siteEverything is painted on a canvas, every frame, from a single number: the time of the water. A GSAP timeline moves it on with ease none, together with a few springy tweens (the tank arriving, the slosh of the water, the bounce of the logo, the spreading colour). Each drop of ink is a function of time, not a step-by-step simulation: so the timeline can be paused, rewound and sent to a label (start, drop, ink, gather, logo, accent, rest, leave) and the frame is always the same.
Each particle has a place on a doughnut-shaped ring: an angle round the drop's axis and a point on the cross-section, laid along a spiral. The middle of the ring sinks and slows down exponentially, the radius grows, and the cross-section turns backwards (up outside, down inside) like a real smoke ring. After half a second the radius is bent by a sine, the ring breaks into lobes and some of the particles slide along filaments that hang, sink and spread; others make the wake up to the surface.
On top of the shape there is a slow current: the curl of a sum of waves (sin and cos of position and time), worked out with exact derivatives. Being a field without divergence, neighbouring particles move together and the ink looks like a fluid rather than dust. The particles are soft blots painted once on a small canvas with a radial gradient and stamped with drawImage at a low opacity: where they pile up the ink is dark, where they thin out it is a veil.
The letters are measured on a canvas in the page's face and painted sharp on a separate canvas; the target points are picked from its pixels, marking the ones on an edge. Each cloud turns round its middle while it shrinks onto the points (a growing rotation and a shrinking radius together), then the sharp logo comes out of a light blur made of copies shifted in a circle. The inner particles fade, the edge ones stay and drift: that is the fluid haze round the letters.
The orange drop has its own particles, which end up on the letters near the point it touches. The colour spreads on a second canvas: the logo, then the colour with source-in, then a radial gradient with destination-in whose radius grows with elastic.out. If IMAGE holds an address, the logo becomes that picture: the opacity of every pixel is multiplied by how dark or coloured it is, so a white background stays water. In the Playground, next to the field, there is a button to upload a file.
| Name | File | Default | What it changes |
|---|---|---|---|
NAME | script.js | 'Nerida' | The logo as a word: the ink gathers to draw it. |
IMAGE | script.js | '' | The logo as a picture: the address of a file, or upload it from your computer. If there is one, it takes the place of the word. |
DROPS | script.js | 3 | How many drops of ink fall into the water before the logo forms (1 to 5). |
SWIRL | script.js | 1 | How much the ink curls and turns in the current before it arrives (0 = it goes almost straight to the logo). |
INK | script.js | 1 | How much ink: more particles and denser clouds. |
ACCENT | script.js | true | The last drop in a second colour, which falls on the logo and tints part of it. |
SPEED | script.js | 1 | The speed of the whole animation: 2 is twice as fast, 0.5 half as fast. |
REST | script.js | 4 | How many seconds the logo stays on show before the ink dissolves. |
LOOP | script.js | true | Whether the ink dissolves and the logo is drawn again. With false the logo stays, its edges drifting gently. |
To present a logo with a slow, liquid gesture: the opening of a site for a cosmetics brand, a paper mill, a design studio, a gallery, a water or a tea, a preview for a client, a loading screen, a social post. It works with a written wordmark and with a picture.
The same animation with the sizes adapted: on a tall screen the tank stands upright, the logo is almost as wide as the tank and there are fewer particles because the logo is smaller. A tap restarts it.
Nothing moves: the tank fades in, then the logo already formed, with its tint and the still haze at its edges. If the animation starts again, the logo fades out and back in.
GSAP 3.15.0, Fraunces (font variabile) 5.3.0.
Compressed with gzip, the three demo files weigh 12 KB; the libraries: GSAP 28 KB.
Tested on 11 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.