Animated beam

애니메이티드 빔

A bright pulse that travels along a line connecting two nodes, giving a diagram the sense that data is actively flowing between them.

Also known as: Connector pulseFlowing connection line
···
html
<svg viewBox="0 0 320 160" width="100%" height="100%" preserveAspectRatio="xMidYMid meet">
  <path id="p1" d="M40,40 C110,40 110,80 160,80 C210,80 210,120 280,120" fill="none" stroke="var(--line)" stroke-width="2"/>
  <path id="b1" d="M40,40 C110,40 110,80 160,80 C210,80 210,120 280,120" fill="none" stroke="var(--accent)" stroke-width="2.5" stroke-linecap="round" stroke-dasharray="8 40"/>
  <path id="p2" d="M40,120 C110,120 110,80 160,80 C210,80 210,40 280,40" fill="none" stroke="var(--line)" stroke-width="2"/>
  <path id="b2" d="M40,120 C110,120 110,80 160,80 C210,80 210,40 280,40" fill="none" stroke="var(--accent-2)" stroke-width="2.5" stroke-linecap="round" stroke-dasharray="8 40"/>
  <circle cx="40" cy="40" r="9" fill="var(--surface)" stroke="var(--line)" stroke-width="2"/>
  <circle cx="40" cy="120" r="9" fill="var(--surface)" stroke="var(--line)" stroke-width="2"/>
  <circle cx="160" cy="80" r="12" fill="var(--accent)"/>
  <circle cx="280" cy="40" r="9" fill="var(--surface)" stroke="var(--line)" stroke-width="2"/>
  <circle cx="280" cy="120" r="9" fill="var(--surface)" stroke="var(--line)" stroke-width="2"/>
</svg>
css
svg{width:min(340px,92%);height:auto}
#b1{animation:flow 2.2s linear infinite}
#b2{animation:flow 2.2s linear infinite 1.1s}
@keyframes flow{to{stroke-dashoffset:-480}}

Draw a curve between two nodes as an SVG path, then overlay a second path following the same route with a different stroke. Set that second path's stroke-dasharray to a repeating "short dash, short gap" pattern and keep animating stroke-dashoffset, and a line of short dashes appears to flow continuously along the route.

Keep the path itself static and faintly coloured so it's always visible, and reserve the bright accent colour (plus a touch of blur) for the short travelling dash — the beam. With several nodes, stagger each connector's animation delay so the beams don't all launch in sync.

For integration diagrams and architecture sections, this reads far more intuitively than a static line as "these services are connected and exchanging data right now."

When to use

Use for an integrations showcase, an architecture diagram, or a "many tools, one hub" landing section. Too many beams at once makes it hard to tell what to look at — limit it to the 2–3 connections that matter.