<main>
<div></div>
<div></div>
<div></div>
<div></div>
<div></div>
</main>
main {
display: flex;
flex-flow: row wrap;
justify-content: space-between;
}
div {
background: red;
margin: 20px auto;
flex-basis: 200px;
height: 200px;
border: 1px solid black;
}
<div class="grid">
<div>Ячейка</div>
<div>Ячейка</div>
...
<!-- Повторить max число колонок вмещающихся по ширине экрана -->
<div class="grid-clearfix"></div>
<div class="grid-clearfix"></div>
....
<div class="grid-clearfix"></div>
</div>
.grid {
display: flex;
flex-flow: row wrap;
align-items: flex-start;
}
.grid > div {
flex-grow: 1;
flex-basis: 270px;
box-sizing: border-box;
padding: 5px;
}
.grid .grid-clearfix {
opacity: 0;
height: 0px;
padding: 0;
overflow: hidden;
}
.empty-flex {
height: 0;
border: 0; //опционально, для универсальности
text-decoration: none; //опционально, для универсальности
}
main {
display: flex;
flex-flow: row wrap;
justify-content: flex-start;
}
div {
background: red;
margin: 20px;
flex-basis: 200px;
height: 200px;
border: 1px solid black;
}
main > div:last-child {
margin-right: auto;
}