Vertical centering with flexbox
by Pavel Richter
HTML
<div class="flex-container">
<div class="flex-column flex-column-auto">
<!-- Article -->
<article>
<div class="flex-container">
<div class="flex-column">
<img src="http://dummyimage.com/100x100/000/fff" alt="Image" class="image">
</div>
<div class="flex-column flex-column-auto">
<header class="header">
<h2>A short title</h2>
</header>
</div>
</div>
</article>
</div>
<div class="flex-column flex-column-auto">
<!-- Article -->
<article>
<div class="flex-container">
<div class="flex-column">
<img src="http://dummyimage.com/100x100/000/fff" alt="Image" class="image">
</div>
<div class="flex-column flex-column-auto">
<header class="header">
<h2>A long long long long title</h2>
</header>
</div>
</div>
</article>
</div>
<div class="flex-column flex-column-auto">
<!-- Article -->
<article>
<div class="flex-container">
<div class="flex-column">
<img src="http://dummyimage.com/100x100/000/fff" alt="Image" class="image">
</div>
<div class="flex-column flex-column-auto">
<header class="header">
<h2>A super long long long long long title</h2>
</header>
</div>
</div>
</article>
</div>
</div>
CSS
/* Layout */
.flex-container {
display: -webkit-box;
display: -moz-box;
display: -ms-flexbox;
display: -webkit-flex;
display: flex;
-webkit-flex-direction: row;
-ms-flex-direction: row;
flex-direction: row;
-webkit-flex-wrap: wrap;
-ms-flex-wrap: wrap;
flex-wrap: wrap;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
padding: 0;
margin: 0;
}
.flex-column {
-webkit-flex-direction: column;
-ms-flex-direction: column;
flex-direction: column;
-webkit-flex-grow: 0;
flex-grow: 0;
-webkit-flex-shrink: 0;
flex-shrink: 0;
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
-webkit-box-flex: 0;
-moz-box-flex: 0;
}
.flex-column-auto {
-webkit-flex-grow: 1;
flex-grow: 1;
-webkit-flex-basis: 0;
-ms-flex-preferred-size: 0;
flex-basis: 0;
width: auto;
max-width: 100%;
}
/* Style */
.image {
border-radius: 50px;
}
.header {
padding: 20px;
}