Back to CSS Stacked Cards Fan Spread Pure CSS
Share
HTML
<div class="scd-fan">
  <div class="scd-fan__stage">
    <div class="scd-fan__leaf"><h3>Fern</h3><span>Pteridophyta</span></div>
    <div class="scd-fan__leaf"><h3>Sage</h3><span>Salvia</span></div>
    <div class="scd-fan__leaf"><h3>Ivy</h3><span>Hedera</span></div>
    <div class="scd-fan__leaf"><h3>Thyme</h3><span>Thymus</span></div>
    <div class="scd-fan__leaf"><h3>Moss</h3><span>Bryophyta</span></div>
  </div>
</div>
CSS
@import url('https://fonts.googleapis.com/css2?family=Fraunces:opsz,[email protected],500;9..144,600&family=Spectral:wght@400&display=swap');

.scd-fan, .scd-fan *, .scd-fan *::before, .scd-fan *::after { box-sizing: border-box; margin: 0; padding: 0; }

.scd-fan {
  min-height: 460px;
  display: grid;
  place-items: center;
  background: linear-gradient(135deg,#f4ede1,#e6dcc6);
  font-family: 'Spectral', serif;
}
.scd-fan__stage {
  position: relative;
  width: 200px; height: 280px;
  transform: translateY(60px);
}
.scd-fan__leaf {
  position: absolute; inset: 0;
  border-radius: 14px 14px 60px 60px;
  background: linear-gradient(165deg,#1f4d3a,#2d6e4f);
  box-shadow: 0 16px 30px rgba(31,77,58,.35);
  transform-origin: 50% 110%;
  transition: transform .7s cubic-bezier(.34,1.4,.4,1);
  display: flex; flex-direction: column; justify-content: flex-end;
  padding: 22px;
  color: #e9f3ec;
  border: 1px solid rgba(255,255,255,.15);
}
.scd-fan__leaf h3 { font-family: 'Fraunces', serif; font-size: 1.3rem; font-weight: 600; }
.scd-fan__leaf span { font-size: .8rem; opacity: .7; letter-spacing: .18em; text-transform: uppercase; }
.scd-fan__leaf:nth-child(odd) { background: linear-gradient(165deg,#7a3b2e,#a8543f); }
.scd-fan__leaf:nth-child(1) { transform: rotate(-40deg); }
.scd-fan__leaf:nth-child(2) { transform: rotate(-20deg); }
.scd-fan__leaf:nth-child(3) { transform: rotate(0deg); }
.scd-fan__leaf:nth-child(4) { transform: rotate(20deg); }
.scd-fan__leaf:nth-child(5) { transform: rotate(40deg); }
.scd-fan__stage:hover .scd-fan__leaf:nth-child(1) { transform: rotate(-72deg); }
.scd-fan__stage:hover .scd-fan__leaf:nth-child(2) { transform: rotate(-36deg); }
.scd-fan__stage:hover .scd-fan__leaf:nth-child(3) { transform: rotate(0deg) translateY(-12px); }
.scd-fan__stage:hover .scd-fan__leaf:nth-child(4) { transform: rotate(36deg); }
.scd-fan__stage:hover .scd-fan__leaf:nth-child(5) { transform: rotate(72deg); }

@media (prefers-reduced-motion: reduce) {
  .scd-fan__leaf { transition: none !important; }
}