<figure class="d-container">
  <div class="d-flex-stretch">
      <h2>Column one</h2>
      You'll notice that even though this column has far more content in it, instead of the other columns ending early, they size themselves to meet the end of this column vertically.
      <h2>Column two</h2>
      <p>This is a column with not much content.</p>
      <h2>Column Three</h2>
      <p>Normally, the only way to achieve this would be either a hack, or to set all boxes to min-height.</p>
* {
    margin: 0;
    padding: 0

li {
    list-style: none

* {
    box-sizing: border-box

body {
    font-size: 100%;
    line-height: 1.6

.d-container:first-child {
    margin-top: 0

.d-container {
    background: #f7f7f7;
    border-bottom: 1px solid #eee;
    margin: 2em auto;
    padding: 2em 5%;
    width: 100%

.d-container:after {
    clear: both;
    content: "";
    display: table

.d-container>h1 {
    color: #333;
    font-size: 2em;
    line-height: 1.2;
    margin: 0 0 .5em;
    text-align: center

.d-flex-stretch {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    max-width: 960px;
    margin: 0 auto;
    -webkit-flex-wrap: wrap;
    -ms-flex-wrap: wrap;
    flex-wrap: wrap;
    -webkit-box-pack: start;
    -webkit-justify-content: flex-start;
    -ms-flex-pack: start;
    justify-content: flex-start;
    -webkit-box-align: stretch;
    -webkit-align-items: stretch;
    -ms-flex-align: stretch;
    align-items: stretch

.d-flex-stretch>div {
    display: -webkit-box;
    display: -webkit-flex;
    display: -ms-flexbox;
    display: flex;
    -webkit-box-flex: 1;
    -webkit-flex: 1 0 30%;
    -ms-flex: 1 0 30%;
    flex: 1 0 30%;
    border: 1px solid #ddd;
    border-left: none;
    -webkit-box-orient: vertical;
    -webkit-box-direction: normal;
    -webkit-flex-direction: column;
    -ms-flex-direction: column;
    flex-direction: column;
    padding: 2em;
    background: #fff

.d-flex-stretch>div:first-child {
    border-left: 1px solid #ddd

.d-flex-stretch h2 {
    margin: 0 0 1em

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

  1. //cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js