Gate
CSSA physical gate barrier rotates ninety degrees, allowing a stream of waiting particles to pass through.
- Tier
- CSS
- Dependencies
- None
- Duration
- 5.5 s, loops
- Categories
- Icons and micro-interactions
- Use cases
- Workflow and approvals, Compliance and audit
- Industries
- SaaS and software, Cross-industry
- Style
- Technical · light stroke
- Set
- rollout
- Tags
- geometriclineloopparticlesrotate
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-rollout-gate" data-pulsar="rollout-gate" viewBox="0 0 160 96"><line x1="16" x2="144" y1="36" y2="36" stroke="currentColor" stroke-linecap="round" stroke-width="1.5" opacity=".3"></line><line x1="16" x2="144" y1="60" y2="60" stroke="currentColor" stroke-linecap="round" stroke-width="1.5" opacity=".3"></line><circle cx="78" cy="36" r="3" fill="currentColor"></circle><circle cx="78" cy="60" r="3" fill="currentColor"></circle><g id="rollout-gate-arm"><line x1="78" x2="78" y1="60" y2="36" stroke="var(--pulsar-accent, currentColor)" stroke-linecap="round" stroke-width="2.5"></line></g><g id="rollout-gate-particles" fill="var(--pulsar-accent, currentColor)"><circle id="rollout-gate-p1" cx="40" cy="48" r="2.5"></circle><circle id="rollout-gate-p2" cx="60" cy="48" r="2.5"></circle><circle id="rollout-gate-p3" cx="100" cy="48" r="2.5"></circle><circle id="rollout-gate-p4" cx="124" cy="48" r="2.5"></circle></g></svg>
animation.css
.pulsar-rollout-gate #rollout-gate-arm {
transform-origin: 78px 60px;
animation: rollout-gate-open 5500ms cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
@keyframes rollout-gate-open {
0%,
28% {
transform: rotate(0deg);
}
38%,
80% {
transform: rotate(90deg);
}
90%,
100% {
transform: rotate(0deg);
}
}
.pulsar-rollout-gate #rollout-gate-particles {
animation: rollout-gate-surge 5500ms linear infinite;
}
@keyframes rollout-gate-surge {
0%,
28% {
transform: translateX(0);
}
38%,
82% {
transform: translateX(36px);
}
90%,
100% {
transform: translateX(0);
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-rollout-gate * {
animation: none !important;
}
}