#CSS masonry with flexbox, :nth-child(), and order | Tobias Ahlin #https://tobiasahlin.com/blog/masonry-with-css/ .container { display: flex; flex-flow: column wrap; align-content: space-between; /* Your container needs a fixed height, and it * needs to be taller than your tallest column. */ height: 600px; } .item { width: 32%; margin-bottom: 2%; /* Optional */ } /* Re-order items into 3 rows */ .item:nth-child(3n+1) { order: 1; } .item:nth-child(3n+2) { order: 2; } .item:nth-child(3n) { order: 3; } /* Force new columns */ .container::before, .container::after { content: ""; flex-basis: 100%; width: 0; order: 2; } <div class="container"> <div class="item"></div> <div class="item"></div> <div class="item"></div> ... </div> 4 colonnes .container { display: flex; flex-flow: column wrap; align-content: space-between; /* Your container needs a fixed height, and it * needs to be taller than your tallest column. */ height: 600px; } .item { width:24%; margin-bottom: 2%; /* Optional */ } /* Re-order items into 4 rows */ .item:nth-child(4n+1) { order: 1; } .item:nth-child(4n+2) { order: 2; } .item:nth-child(4n+3) { order: 3; } .item:nth-child(4n) { order: 4; } /* Force new columns */ .break { content: ""; flex-basis: 100%; width: 0; margin: 0; }