Portal Entrance
CSSTwo vertical door panels slide apart from the center to reveal an illuminated space beyond.
- Tier
- CSS
- Dependencies
- None
- Duration
- 4 s, loops
- Categories
- Transitions and reveals
- Use cases
- Security and trust, Transitions and reveals
- Industries
- Construction and built environment, Cross-industry
- Style
- Duotone · light stroke
- Set
- handover
- Tags
- geometricwipeloop
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-handover-door" data-pulsar="handover-door" viewBox="0 0 160 96"><rect width="68" height="64" x="46" y="16" fill="currentColor" fill-opacity=".05" stroke="currentColor" stroke-width="2" class="portal-frame" rx="4"></rect><g class="light-field"><path fill="var(--pulsar-accent, currentColor)" fill-opacity=".15" d="m50 78 18-58h24l18 58z"></path><circle cx="80" cy="42" r="8" fill="var(--pulsar-accent, currentColor)" fill-opacity=".4"></circle><line x1="80" x2="80" y1="20" y2="78" stroke="var(--pulsar-accent, currentColor)" stroke-dasharray="2 4" stroke-width="1.5"></line></g><rect width="31" height="60" x="48" y="18" fill="currentColor" fill-opacity=".8" stroke="currentColor" stroke-width="1.5" class="panel-left" rx="2"></rect><line x1="75" x2="75" y1="46" y2="52" stroke="var(--pulsar-accent, currentColor)" stroke-linecap="round" stroke-width="2" class="handle-left"></line><rect width="31" height="60" x="81" y="18" fill="currentColor" fill-opacity=".8" stroke="currentColor" stroke-width="1.5" class="panel-right" rx="2"></rect><line x1="85" x2="85" y1="46" y2="52" stroke="var(--pulsar-accent, currentColor)" stroke-linecap="round" stroke-width="2" class="handle-right"></line></svg>
animation.css
.pulsar-handover-door {
display: block;
width: 100%;
height: 100%;
}
.pulsar-handover-door .panel-left,
.pulsar-handover-door .handle-left {
animation: handover-door-slide-left 4s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
.pulsar-handover-door .panel-right,
.pulsar-handover-door .handle-right {
animation: handover-door-slide-right 4s cubic-bezier(0.4, 0, 0.2, 1) infinite;
}
.pulsar-handover-door .light-field {
animation: handover-door-light 4s ease-in-out infinite;
}
@keyframes handover-door-slide-left {
0%,
15%,
85%,
100% {
transform: translateX(0);
}
40%,
65% {
transform: translateX(-18px);
}
}
@keyframes handover-door-slide-right {
0%,
15%,
85%,
100% {
transform: translateX(0);
}
40%,
65% {
transform: translateX(18px);
}
}
@keyframes handover-door-light {
0%,
15%,
85%,
100% {
opacity: 0.2;
}
40%,
65% {
opacity: 1;
}
}
@media (prefers-reduced-motion: reduce) {
.pulsar-handover-door .panel-left,
.pulsar-handover-door .handle-left,
.pulsar-handover-door .panel-right,
.pulsar-handover-door .handle-right,
.pulsar-handover-door .light-field {
animation: none;
transform: none;
opacity: 1;
}
}