Logo Loader

로고 로더

A fictional brand mark that draws itself along its outline, then fills in — a loader that doubles as branding.

Also known as: Logo draw-inBrand loader
···
html
<div class="wrap" role="status" aria-live="polite" aria-label="Atloop 불러오는 중">
  <svg class="lg" viewBox="0 0 100 100"><path class="lg-fill" d="M50 12 L84 70 L16 70 Z" /><path class="lg-line" d="M50 12 L84 70 L16 70 Z" /></svg>
  <span class="cap">stroke-dashoffset 드로잉 + fill 페이드</span>
</div>
css
.wrap{display:flex;flex-direction:column;align-items:center;gap:16px}
.lg{width:clamp(40px,13vmin,72px);height:clamp(40px,13vmin,72px)}
.lg-fill{fill:var(--accent);opacity:0;animation:lgfill 3s ease-in-out infinite}
.lg-line{fill:none;stroke:var(--accent-2);stroke-width:5;stroke-linejoin:round;stroke-dasharray:220;stroke-dashoffset:220;animation:lgline 3s ease-in-out infinite}
@keyframes lgline{0%{stroke-dashoffset:220}45%,60%{stroke-dashoffset:0}100%{stroke-dashoffset:220}}
@keyframes lgfill{0%,45%{opacity:0}60%,85%{opacity:1}100%{opacity:0}}
.cap{font-size:clamp(9px,2.4vmin,11px);color:var(--muted);letter-spacing:.02em}

Instead of an abstract shape, this fills the wait with the brand mark itself, turning indeterminate downtime into brand exposure. It fits a first-impression spot — right after login, an app splash — and gets tiresome fast if reused for something as routine as a button load, where a plain ring spinner is the safer choice. Use a fictional mark, as this demo does, rather than copying a real logo.

The logo's outline is drawn as an SVG path; stroke-dasharray sets the line's full length, and a keyframe animates stroke-dashoffset from that length down to 0, producing the "drawn along its outline" effect. Right after the line finishes, the fill's opacity rises from 0 to 1 so the shape fills in, then after a pause the dashoffset resets to the full length and the cycle repeats.

Even when brand exposure is the point, this is still an indeterminate loader underneath — prefer a determinate shape like progress-ring once real progress is knowable. Give the wrapper role="status" and aria-live="polite"; because the logo itself represents the brand rather than being pure decoration, an aria-label like "Loading Acme…" is more appropriate than aria-hidden. Under prefers-reduced-motion, skip the draw-in animation and show the completed logo as a static image.