Cluster Sync
CSSTwo separated sub-grids of cluster nodes exchange continuous bidirectional streams of horizontal packet pulses across data synchronization buses.
- Tier
- CSS
- Dependencies
- None
- Duration
- 4.8 s, loops
- Categories
- Loaders and spinners
- Use cases
- Loading and waiting, Sync and integration
- Industries
- SaaS and software, IT services and infrastructure
- Style
- Minimal line · light stroke
- Set
- cluster
- Tags
- looplinedotsgrid
Companion assets
The same artwork, not animated. Derived from the entry’s own resting state, so it matches exactly.
Code
animation.svg
<svg xmlns="http://www.w3.org/2000/svg" aria-labelledby="cluster-sync-title" class="pulsar pulsar-cluster-sync" data-pulsar="cluster-sync" role="img" viewBox="0 0 160 96"><title id="cluster-sync-title">Two separated cluster sub-grids continuously exchanging horizontal packet streams over synchronization buses</title><g fill="none" stroke="currentColor" stroke-width=".5" opacity=".15"><rect width="40" height="48" x="18" y="24" rx="2"></rect><rect width="40" height="48" x="102" y="24" rx="2"></rect></g><g fill="none" stroke="currentColor" stroke-width=".6" opacity=".2"><line x1="48" x2="112" y1="36" y2="36"></line><line x1="48" x2="112" y1="60" y2="60"></line></g><line id="cluster-sync-stream-fwd" x1="48" x2="112" y1="36" y2="36" fill="none" stroke="currentColor" stroke-dasharray="8 24" stroke-linecap="round" stroke-width="1.2"></line><line id="cluster-sync-stream-rev" x1="112" x2="48" y1="60" y2="60" fill="none" stroke="currentColor" stroke-dasharray="8 24" stroke-linecap="round" stroke-width="1.2"></line><g id="cluster-sync-left-nodes"><circle cx="28" cy="36" r="3" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="28" cy="36" r="1.5" fill="currentColor"></circle><circle cx="48" cy="36" r="3.5" fill="none" stroke="currentColor"></circle><circle cx="48" cy="36" r="1.5" fill="currentColor"></circle><circle cx="28" cy="60" r="3" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="28" cy="60" r="1.5" fill="currentColor"></circle><circle cx="48" cy="60" r="3.5" fill="none" stroke="currentColor"></circle><circle cx="48" cy="60" r="1.5" fill="currentColor"></circle></g><g id="cluster-sync-right-nodes"><circle cx="112" cy="36" r="3.5" fill="none" stroke="currentColor"></circle><circle cx="112" cy="36" r="1.5" fill="currentColor"></circle><circle cx="132" cy="36" r="3" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="132" cy="36" r="1.5" fill="currentColor"></circle><circle cx="112" cy="60" r="3.5" fill="none" stroke="currentColor"></circle><circle cx="112" cy="60" r="1.5" fill="currentColor"></circle><circle cx="132" cy="60" r="3" fill="none" stroke="currentColor" stroke-width=".8"></circle><circle cx="132" cy="60" r="1.5" fill="currentColor"></circle></g></svg>
animation.css
.pulsar-cluster-sync {
--pulsar-accent: currentColor;
}
.pulsar-cluster-sync #cluster-sync-stream-fwd,
.pulsar-cluster-sync #cluster-sync-stream-rev {
stroke: var(--pulsar-accent, currentColor);
}
.pulsar-cluster-sync #cluster-sync-left-nodes circle:nth-child(even),
.pulsar-cluster-sync #cluster-sync-right-nodes circle:nth-child(even) {
fill: var(--pulsar-accent, currentColor);
}
.pulsar-cluster-sync #cluster-sync-stream-fwd {
animation: cluster-sync-fwd 4800ms linear infinite;
}
@keyframes cluster-sync-fwd {
0% {
stroke-dashoffset: 64;
opacity: 0.4;
}
50% {
opacity: 1;
}
100% {
stroke-dashoffset: 0;
opacity: 0.4;
}
}
.pulsar-cluster-sync #cluster-sync-stream-rev {
animation: cluster-sync-rev 4800ms linear infinite;
}
@keyframes cluster-sync-rev {
0% {
stroke-dashoffset: 0;
opacity: 0.4;
}
50% {
opacity: 1;
}
100% {
stroke-dashoffset: 64;
opacity: 0.4;
}
}
.pulsar-cluster-sync #cluster-sync-left-nodes {
animation: cluster-sync-pulse-left 4800ms ease-in-out infinite;
}
@keyframes cluster-sync-pulse-left {
0%,
100% {
opacity: 0.7;
}
25% {
opacity: 1;
}
75% {
opacity: 0.7;
}
}
.pulsar-cluster-sync #cluster-sync-right-nodes {
animation: cluster-sync-pulse-right 4800ms ease-in-out infinite;
}
@keyframes cluster-sync-pulse-right {
0%,
100% {
opacity: 0.7;
}
50% {
opacity: 1;
}
75% {
opacity: 0.8;
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-cluster-sync * {
animation: none !important;
}
.pulsar-cluster-sync #cluster-sync-stream-fwd,
.pulsar-cluster-sync #cluster-sync-stream-rev {
stroke-dashoffset: 0;
opacity: 0.8;
}
}