Вы можете использовать авто поля
До выравнивания через justify-content и align-self любое положительное свободное пространство распределяется по автоматическим полям в этом измерении.
.card-wrapper {
display: flex;
flex-wrap: wrap;
flex-direction: column;
}
.card {
flex: 0 1 100%;
margin: 0 10px 10px 0;
border: 1px solid grey;
border-top: 10px solid black;
box-shadow: 1px 1px 3px #888;
}
p {
flex-grow: 1;
}
.card-content {
padding: 10px;
}
.footer{ margin-top: auto; }
@media all and (min-width: 30em) {
.card {
flex: 0 1 30%
}
;
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<div class="card-wrapper">
<a href="#" class="card">
<div class="card-content">
<h2>Title</h2>
<p>Content</p>
<p class="footer">This should be the footer.</p>
</div>
</a>
</div>
</body>
</html>