
The dinosaur-bitten logo
Intro, SVG, Text
NewFree
A minimal-style logo intro in the language of type design: the five guide lines are drawn (ascender, cap height, x-height, baseline, descender) and the letters of the name grow up from the baseline, wide and light, until each one snaps onto its own lines, which feel the hit. In the end only the baseline is left, in the accent colour.
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 logo on the guide lines</title>
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fontsource-variable/roboto-flex@5.3.0/wdth.css">
<link rel="stylesheet" href="style.css">
</head>
<body>
<main class="scena">
<!-- the stage: five guide lines of a type designer, then the letters of the name snapping onto them -->
<svg class="palco" data-stage role="img" aria-label="Halyard" xmlns="http://www.w3.org/2000/svg">
<g data-guides></g>
<g data-labels></g>
<g data-letters></g>
</svg>
<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.
25 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 logo on the guide lines” from Animorio and fit it into my siteThe five heights are not made up: a canvas set in the same face, Roboto Flex, uses measureText to measure the ink of the l (ascender), the H (cap height), the x (x-height) and the p (descender). The canvas cannot change the width axis, so the width of each letter at the end of its run is measured by the SVG itself with getComputedTextLength on a hidden text with its font-variation-settings. The size is the one that fits the name into two thirds of the lines and the block of lines into a third of the height.
For every letter the script measures how far the ink rises and drops and compares it with the heights of the lines: the top line is the nearest among ascender, cap height and x-height; the bottom one is the descender if the letter drops below the baseline, otherwise the baseline. So with any name the stems touch the right lines.
Every letter is an SVG group with a translate to its place on the baseline and a vertical scale: it starts at half height, wide (wdth axis 132) and light (wght 260). A power3.in tween takes it one pixel past its height, speeding up like something snapping; an elastic.out one brings it back to 1. Meanwhile a third tween narrows it to wdth 90 and takes it to wght 640.
The lines are paths redrawn on every frame with a point every four pixels. When a letter arrives it adds a bell-shaped dip, exp of minus x squared, as wide as the letter, upwards on the top line and downwards on the bottom one; its depth goes back to zero with elastic.out, so the line shivers and stops.
Everything that moves is an object of numbers: how much of each line is drawn, the label, the height, width and weight of each letter, how far the baseline has shrunk. A GSAP timeline animates them, one function on the ticker turns them into SVG attributes; on resize only the measures change, so the direction carries on without a jump. With reduced motion the logo appears already on its line, with a fade.
| Name | File | Default | What it changes |
|---|---|---|---|
WORD | script.js | 'Halyard' | The name: a word with letters that rise and drop puts all five lines to work. |
GUIDES | script.js | ['ascender', 'cap height', 'x-height', 'baseline', 'descender'] | The names of the five lines, top to bottom. |
DRAW_TIME | script.js | 1.3 | How many seconds each line takes to draw itself. |
LINE_STAGGER | script.js | 0.2 | The seconds between one line and the next. |
STAGGER | script.js | 0.16 | The seconds between one letter and the next. |
GROW_TIME | script.js | 0.6 | How many seconds a letter takes to grow onto its lines. |
SNAP | script.js | 1 | How many pixels the letter goes past its line before it settles. |
WOBBLE | script.js | 2.2 | How many pixels the line gives where the letter touches it. |
WIDE | script.js | 132 | The width (wdth axis) a letter is born with. |
NARROW | script.js | 90 | The width it ends with. |
LIGHT | script.js | 260 | The weight a letter is born with. |
HEAVY | script.js | 640 | The weight it ends with. |
HOLD | script.js | 1 | How many seconds the name stays on its five lines before they are cleared. |
SPEED | script.js | 1 | 2 is twice as fast, 0.5 half as fast. |
For the opening of a type foundry’s site, a graphic design studio or a branding agency, the loader of a wordmark made of a single word, the launch of a new typeface.
The same animation: the lines run from edge to edge, the name is smaller and the labels sit above or below their line, at its ends, instead of in the margins.
Nothing moves: the logo fades in already on its vermilion baseline, then the Replay button, which makes it fade out and back in.
GSAP 3.15.0, Roboto Flex (font variabile) 5.3.0.
Compressed with gzip, the three demo files weigh 6.2 KB; the libraries: GSAP 28 KB.
Tested on 21 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.