Replicate
CSSContinuous cascading waves of data flow from a primary cylinder to a secondary cylinder to keep states synchronized.
- Tier
- CSS
- Dependencies
- None
- Duration
- 5 s, loops
- Categories
- Icons and micro-interactions
- Use cases
- Determinate progress, Sync and integration
- Industries
- SaaS and software, IT services and infrastructure
- Style
- Technical · light stroke
- Set
- failover
- Tags
- geometriclineloopparticleswave
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" fill="none" aria-hidden="true" class="pulsar pulsar-failover-replicate" data-pulsar="failover-replicate" viewBox="0 0 160 96"><g stroke="currentColor" stroke-linejoin="round" stroke-width="1.5"><ellipse cx="40" cy="28" fill="currentColor" fill-opacity=".08" rx="18" ry="6"></ellipse><path d="M22 28v40c0 4 36 4 36 0V28"></path><path d="M22 42c0 4 36 4 36 0"></path><path d="M22 55c0 4 36 4 36 0"></path><circle cx="40" cy="28" r="2.5" fill="currentColor"></circle></g><g stroke="var(--pulsar-accent, currentColor)" stroke-linejoin="round" stroke-width="1.5"><ellipse cx="120" cy="28" fill="var(--pulsar-accent, currentColor)" fill-opacity=".08" rx="18" ry="6"></ellipse><path d="M102 28v40c0 4 36 4 36 0V28"></path><path d="M102 42c0 4 36 4 36 0"></path><path d="M102 55c0 4 36 4 36 0"></path><circle id="failover-replicate-beacon-r" cx="120" cy="28" r="2.5" fill="var(--pulsar-accent, currentColor)"></circle></g><line x1="58" x2="102" y1="36" y2="36" stroke="currentColor" stroke-dasharray="2 3" opacity=".3"></line><line x1="58" x2="102" y1="58" y2="58" stroke="currentColor" stroke-dasharray="2 3" opacity=".3"></line><g stroke="var(--pulsar-accent, currentColor)" stroke-linecap="round" stroke-width="1.8"><path id="failover-replicate-wave-1" d="M66 40c8 0 8 14 16 14"></path><path id="failover-replicate-wave-2" d="M76 40c8 0 8 14 16 14"></path><path id="failover-replicate-wave-3" d="M86 40c8 0 8 14 16 14"></path></g></svg>
animation.css
.pulsar-failover-replicate #failover-replicate-wave-1 {
animation: failover-replicate-stream-1 5000ms ease-in-out infinite;
}
.pulsar-failover-replicate #failover-replicate-wave-2 {
animation: failover-replicate-stream-2 5000ms ease-in-out infinite;
}
.pulsar-failover-replicate #failover-replicate-wave-3 {
animation: failover-replicate-stream-3 5000ms ease-in-out infinite;
}
@keyframes failover-replicate-stream-1 {
0% {
opacity: 0;
transform: translateX(-10px);
}
20%,
60% {
opacity: 1;
transform: translateX(4px);
}
80%,
100% {
opacity: 0;
transform: translateX(16px);
}
}
@keyframes failover-replicate-stream-2 {
0%,
15% {
opacity: 0;
transform: translateX(-10px);
}
35%,
75% {
opacity: 1;
transform: translateX(4px);
}
90%,
100% {
opacity: 0;
transform: translateX(16px);
}
}
@keyframes failover-replicate-stream-3 {
0%,
30% {
opacity: 0;
transform: translateX(-10px);
}
50%,
85% {
opacity: 1;
transform: translateX(4px);
}
95%,
100% {
opacity: 0;
transform: translateX(16px);
}
}
.pulsar-failover-replicate #failover-replicate-beacon-r {
animation: failover-replicate-pulse-r 5000ms ease-in-out infinite;
}
@keyframes failover-replicate-pulse-r {
0%,
40% {
transform: scale(0.8);
opacity: 0.4;
}
60%,
85% {
transform: scale(1.4);
opacity: 1;
}
95%,
100% {
transform: scale(0.8);
opacity: 0.4;
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-failover-replicate * {
animation: none !important;
}
}