Flexbox Buttons

Smooth transitioning from 0 to auto using flexbox

by Lee Comstock

HTML

<div class="box">
  <div class="space"></div>
  <p>
    Super Metroid Prime Fusion
  </p>
</div>
<div class="box">
  <div class="space"></div>
  <p>
    Resident Evil 2 Remake
  </p>
</div>
<div class="box">
  <div class="space"></div>
  <p>
    Yolo The Game
  </p>
</div>
<div class="box">
  <div class="space"></div>
  <p>
    Final Fantasy 7 Remake + All Additional DLC + Golden Tophat
  </p>
</div>
<div class="box">
  <div class="space"></div>
  <p>
    DerpVille
  </p>
</div>

SCSS

* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
  transition: 0.25s;
  font-family: monospace;
}

body {
  margin: 10px 0 0 10px;
}

.box {
  width: 150px;
  height: 150px;
  margin: 0 2px 10px 0;
  background: #2d333b;
  border: solid 10px #20262e;
  overflow: hidden;
  display: inline-flex;
  flex-direction: column;
  .space {
    flex-basis: 100%;
    flex-grow: 1;
    flex-shrink: 0;    
  }
  p {
    flex-basis: auto;
    flex-grow: 0;
    flex-shrink: 1;
    background: #20262e;
    padding: 10px;
    width: 100%;
    text-align: left;
    color: white;
  }
}

.box:hover {
  .space {
    flex-grow: 0;
    flex-shrink: 1;
  }
  p {
    flex-grow: 1;
    flex-shrink: 0;    
  }
}