CSS float элементы с неравной высотой влево и вверх в сетке

Мне интересно, как я могу добиться эффекта на рисунке 1.

Float left up

Что у меня так далеко

.box { display: inline-block; vertical-align: top; width: 100px;}

Это дает мне результат, показанный на рисунке 2. (Обратите внимание: я знаю, что могу сделать то же самое с помощью float: left)

Мой HTML-код выглядит примерно так:

<span class="box">A<br><br><br><br></span>
<span class="box">B<br></span>
<span class="box">C<br><br><br></span>
<span class="box">D<br><br><br></span>
<span class="box">E<br><br><br><br><br><br></span>
<span class="box">F</span>
<span class="box">G<br><br><br><br></span>
<span class="box">H<br></span>
<span class="box">I<br><br></span>

Я хочу, чтобы каждый элемент перемещался влево как можно дальше, а между тем - вверх.

Можно ли сделать это с чистым CSS или мне понадобится JavaScript?

EDIT:

Для меня важно, чтобы вся сетка была расположена в центре страницы. Вот почему я использую display: inline-block. Сетка также не должна быть привязана к странице, потому что я хочу, чтобы она обновлялась при изменении размера моего окна.

Ответы на вопрос(3)

Ваш ответ на вопрос