SVG✨ Premium

Logo Draw

A three-step emblem — circle, hexagon, centre dot — drawn stroke by stroke on one shared cycle, looping or just once, with no JavaScript.

CSSMulti-layer

Updated

This effect is part of Effect.Labs — 840 vanilla effects, some free, some premium. SVG has 30 effects, including 3 free. Explore the category →

3 usage examples

A honey co-op's logo drawing itself in the header on arrival (Miellerande) — Logo Draw example 1

① A honey co-op's logo drawing itself in the header on arrival (Miellerande)

WhenWhen the home page shows, the emblem left of the name draws once: the honeycomb cell settles inside its circle, the centre drop appears, then the logo stays put for the rest of the visit.
WhyThe hexagon becomes a honeycomb cell and the single drawing gives a quiet opening signature at header scale, without holding back the page.
Settings--lgd-size: 46px, circle #d98e04, cell #f2b631, dot #b45309, --lgd-speed: 2.2s, --lgd-repeat: 1, transparent background and --lgd-min-h: 0. For the demo, the scene replays the arrival about every 7 s.
"Complete" stamp drawn when the last document is dropped (Quervelle) — Logo Draw example 2

② "Complete" stamp drawn when the last document is dropped (Quervelle)

WhenIn a letting agency's tenant area, the applicant drops the missing employer certificate; once the upload ends, the drop zone gives way to a green stamp that draws itself with the word "Complete".
WhyThe three-step drawing gives the last upload the weight of an official approval: the applicant sees that nothing more is expected.
Settings--lgd-size: 96px, circle and dot #15803d, hexagon #22c55e, --lgd-speed: 1.2s, --lgd-repeat: 1. The stamp is shown (from display: none to visible) when the upload ends; the scene simulates the drag and drop.
Chapter ornament drawn as it scrolls into view in a long read (Ondravelle) — Logo Draw example 3

③ Chapter ornament drawn as it scrolls into view in a long read (Ondravelle)

WhenIn a popular-science long read about a ring-shaped molecule, the reader scrolls; the chapter II ornament draws only once it is fully on screen, above the chapter title.
WhyA circle inside a hexagon is how that molecule is drawn: the ornament illustrates the subject and marks the pause between two parts right when the reader gets there.
Settings--lgd-size: 74px, circle and dot #7c3aed, hexagon #c026d3, --lgd-speed: 2s, --lgd-repeat: 1, --lgd-play: paused. A page IntersectionObserver sets --lgd-play to running on the root once it is visible; the scene scrolls the article.

How it works

The 120×120-unit SVG holds three elements: a circle of radius 55 (.lgd-ring, 4-wide purple stroke), a hexagon (.lgd-shape, 3-wide magenta stroke with rounded corners) and a filled dot of radius 8 in the centre (.lgd-dot). Both outlines carry pathLength="100" and a dash of 100: shifting that dash (stroke-dashoffset from 100 to 0) makes the stroke appear from its starting point.

The three animations share one duration (--lgd-speed, 2.5 s) and split the cycle: the circle draws from 0 to 40%, the hexagon from 20 to 60%, then the dot grows from its centre and turns opaque between 60 and 70%. The drawing stays complete until the end of the cycle. When looping (the default), it vanishes at once and starts over; with --lgd-repeat: 1, it draws once and stays on screen.

The three elements follow a single clock: the dot lights up only once per cycle, growing from its own centre (transform-box: fill-box), and the hexagon stays in step with the circle from one cycle to the next. --lgd-play: paused makes the drawing wait (nothing visible) until you set the variable back to running; hiding then showing the root replays the drawing from the start.

Accessibility

  • Decorative: the SVG carries aria-hidden="true". Used as a clickable logo, the brand name must be in the link (visible text or aria-label).
  • Reduced motion: with prefers-reduced-motion: reduce, the three animations are removed and the emblem shows complete, even while waiting with --lgd-play: paused (measured in all three engines: 0 running animations, stable image).
  • No blinking: the dot lights up only once per cycle; when looping, the emblem redraws every 2.5 s.
  • Contrast: the #8b5cf6 purple circle reaches 4.7:1 on the shipped background and 4.2:1 on white; the #d946ef magenta drops to 3.5:1 on white, enough for a graphic element.

Browser compatibility

Pure CSS. pathLength on a circle needs Chrome 57, Firefox 61 and Safari 14; transform-box (growing from the dot's centre), Chrome 64, Firefox 55 and Safari 11; the reduced-motion rule, Chrome 74 and Firefox 63. Measured in Chromium 151, Firefox 153 and WebKit 26.5: 0 errors, the three elements restart together (once in 3 s each), two independent copies.

Chrome 74+✓ Full (measured)
Firefox 63+✓ Full (measured)
Safari 14+✓ Full (measured in WebKit 26.5)
Edge 79+✓ Full (Chromium engine)
Safari iOS 14+✓ Full (WebKit engine, not tested on a device)
Chrome Android 74+✓ Full (Chromium engine)

Without CSS animations, the emblem shows complete. Before Safari 14, dashes ignore pathLength: the circle and hexagon draw as dotted lines.

The code

HTML structure to paste into your page (the CSS + JS come with your purchase):

index.html — structure
<div class="fx-0600-root">
  <svg class="lgd-svg" viewBox="0 0 120 120" aria-hidden="true">
    <circle class="lgd-ring" pathLength="100" …/>
    <path class="lgd-shape" pathLength="100" d="…"/>
    <circle class="lgd-dot" …/>
  </svg>
</div>

One-time payment, no subscription — the code is yours forever

Customize

Options passed to the API or data-* attributes:

Option / propertyDefaultEffect
--lgd-repeat infinite 1: the logo draws once and stays on screen.
--lgd-play running paused: nothing is drawn until you set the variable back to running (for instance when the logo becomes visible).
--lgd-speed 2.5s Length of a cycle: the three elements keep their order and proportions.
--lgd-size 120px Drawing width (never wider than its container).
--lgd-ring, --lgd-shape, --lgd-dot #8b5cf6, #d946ef, #6366f1 Colours of the circle, the hexagon and the dot.
--lgd-bg and --lgd-min-h #0a0a0f and 300px Frame background and minimum height; transparent and 0 inside a header.
Your own shapes circle, hexagon, dot Replace the SVG elements but keep the classes (lgd-ring draws first, lgd-shape next, lgd-dot appears last) and pathLength="100" on outlines.

FAQ

When looping, each cycle starts from an empty drawing. For a logo that draws and then stays, set --lgd-repeat: 1 on .fx-0600-root.
Put --lgd-play: paused on the root, then: new IntersectionObserver(e => { if (e[0].isIntersecting) root.style.setProperty('--lgd-play', 'running'); }).observe(root);. To replay it later, hide then show the root again.
The code provides three moments (circle, shape, dot). Two outlines can share a class and draw together; for a distinct fourth step, add an @keyframes rule modelled on lgdShape with other percentages.