Блоки выводятся циклом, изначально ширина не известна, в зависимости от количества текста, так чтобы текст был в одну строку и если не посещается в половину ширины то блок должен занимать всю ширину и в последовательности блоков не должно быть дырок.