3D Flip Stack
Solari split-flap board — black flap cards with amber characters that rotate to reveal the next destination on hover.
3D Flip Stack the 17th of 22 designs in the 22 CSS Stacked Card Designs collection. The design is implemented in pure CSS — no JavaScript required. Copy the HTML and CSS panels below into your project. Because the demo is pure CSS, it works in any framework or templating engine you happen to use. The design honours prefers-reduced-motion and uses real semantic markup, so it ships accessibility-ready out of the box.
Live preview
The code
<div class="scd-flip">
<div class="scd-flip__c" style="--i: 0">
<div class="scd-flip__f">P</div>
<div class="scd-flip__b">9</div>
</div>
<div class="scd-flip__c" style="--i: 1">
<div class="scd-flip__f">A</div>
<div class="scd-flip__b">2</div>
</div>
<div class="scd-flip__c" style="--i: 2">
<div class="scd-flip__f">R</div>
<div class="scd-flip__b">A</div>
</div>
<div class="scd-flip__c" style="--i: 3">
<div class="scd-flip__f">I</div>
<div class="scd-flip__b">M</div>
</div>
<div class="scd-flip__c" style="--i: 4">
<div class="scd-flip__f">S</div>
<div class="scd-flip__b">B</div>
</div>
</div> .scd-flip {
position: relative; width: 240px; height: 130px; margin: 0 auto;
display: flex; gap: 4px; perspective: 800px;
background: #1a1a1a; padding: 8px;
border-radius: 4px;
box-shadow: inset 0 0 0 1px #2a2a2a;
}
.scd-flip__c {
flex: 1; position: relative;
transform-style: preserve-3d;
transition: transform .55s cubic-bezier(.3,1,.3,1);
transition-delay: calc(var(--i) * 0.08s);
}
.scd-flip__f, .scd-flip__b {
position: absolute; inset: 0;
display: grid; place-items: center;
border-radius: 3px;
font: 900 36px/1 ui-monospace, monospace;
backface-visibility: hidden;
background: #171717;
color: #ffb000;
border: 1px solid #2a2a2a;
box-shadow: inset 0 -1px 0 #000, inset 0 1px 0 #2a2a2a;
}
.scd-flip__b { transform: rotateY(180deg); }
.scd-flip__f::after, .scd-flip__b::after {
content: '';
position: absolute; left: 0; right: 0;
top: 50%; height: 1px;
background: #000;
}
.scd-flip:hover .scd-flip__c { transform: rotateY(180deg); }