Seems there is a real problem ;-) even with valuable SO comments at hand. In the first instance I tried to float all divs. But even when clearing floats this always left a vertical gap. In a second attempt, I used a table but this wasn’t really responsive design. Next, I tried CSS3 multi-column layout
#container { margin: 0 auto; column-count: 3; column-gap: 2px; width: 320px; background-color: white; }
This works as expected (jsfiddle).
and could be even responsive when adding some code for smaller screens
@media screen and (max-width: 1450px) { #inner { max-width:950px; margin: 0 auto; -moz-column-count: 2; -webkit-column-count: 2; column-count: 2; } } @media screen and (max-width: 950px) { #inner { max-width:480px; margin: 0 auto; -moz-column-count: 1; -webkit-column-count: 1; column-count: 1; } }
jsfiddle looks great but we are soon running into another problem. Whenever adding more divs as the database is updated, the whole layout gets re-arranged column-wise which is very confusing to the viewer. The same happens with flexbox (attempt #4), currently there is no CSS solution at all. You need some JS layout cheating (codepen).