
The dinosaur-bitten logo
Intro, SVG, Text
NewFree
An intro for the logo of a made-up artisan gelato shop, Cremo, in the rich style: a waffle cone rises into its brass holder, a scoop drops on it and a striped piping bag writes the name in glossy, creamy gelato, letter by letter, with a row of curls underneath. Then the flavours rise through the name in layers, chocolate, strawberry, pistachio and mango under the fiordilatte, sprinkles rain down, a cherry drops on top with its stem wobbling, and a drop melts down the side and is pulled back up.
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 gelato shop logo</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/fredoka@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="scena" data-stage>
<!-- the shop awning along the top -->
<div class="tenda" aria-hidden="true"></div>
<p class="marca"><span data-brand>Cremo</span> <span class="marca__dida">Small batch gelato</span></p>
<h1 class="sr" data-title>Cremo</h1>
<!-- everything is drawn in this svg by script.js: the cone in its holder, the scoop, the piped name, the curls,
the sprinkles, the cherry, the drip and the piping bag -->
<svg class="disegno" data-svg aria-hidden="true"></svg>
<p class="motto" data-tagline>Churned every morning, scooped till late.</p>
<button class="pillola" type="button" data-replay data-autoclic>
<span class="pillola__scritta" data-testo="Replay">Replay</span>
</button>
</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.
37 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 gelato shop logo” from Animorio and fit it into my siteEverything is drawn by script.js in an svg as big as the page: the counter, the cone holder, the cone with its waffle grid clipped to its shape, the scoop, the curls, the letters, the sprinkles, the cherry and the piping bag. The sizes come from the font size, worked out from the width and height of the page, and on resize everything is drawn again and the timeline jumps back to where it was.
Each letter is its own text, under a mask: a very thick white line waving along the name, drawn with stroke-dashoffset. The tip of the piping bag follows the point of the line with getPointAtLength, so the gelato appears right under the nozzle; when the tip passes over a letter, the letter lands tall and thin and settles with elastic.out.
The gelato group has an svg filter: a little feTurbulence and feDisplacementMap softens the edges, a feGaussianBlur makes the relief, feSpecularLighting with a light at the top left makes the shine and feDiffuseLighting the shade on the sides; underneath, a warm shadow moved down.
Letters, curls, scoop and drop share one vertical gradient: the timeline moves its stops and the flavours rise from the bottom one after another. The letters are also drawn in a hidden canvas: from there the top of every column of pixels is read, and that is where the sprinkles and the cherry land, so they stay on the gelato.
| Name | File | Default | What it changes |
|---|---|---|---|
WORD | script.js | 'Cremo' | The name of the shop: short, with no letters hanging below the line. |
SPEED | script.js | 1 | 2 is twice as fast, 0.5 half as fast. |
PIPE_TIME | script.js | 2.2 | How many seconds the piping bag takes to write the name. |
LAYER_TIME | script.js | 0.55 | How many seconds each flavour takes to rise. |
SPRINKLES | script.js | 46 | How many sprinkles on a computer (two thirds on a phone). |
GLOSS | script.js | 0.8 | How glossy the gelato is. |
WAVE | script.js | 0.12 | How much the piping line waves, as a share of the letters’ height. |
DRIP | script.js | 1 | 1 makes the drop run, 0 does not. |
For the opening of the site of a gelato shop, a pastry shop, a frozen yogurt bar or a dessert café, the loader of a food brand, the launch of a new flavour.
The same intro: the name, the cone and the piping bag are smaller, there are a few fewer sprinkles, and everything fits between the awning and the Replay button.
Nothing falls and nothing moves: the finished logo appears with its flavours, sprinkles and cherry, in a fade; then the Replay button.
GSAP 3.15.0, Fredoka (font variabile) 5.3.0.
Compressed with gzip, the three demo files weigh 11 KB; the libraries: GSAP 28 KB.
Tested on 22 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.