It is not possible to accomplish what you portrayed only in HTML / CSS, providing any flexibility or ease of reproduction, although there is a neat Javascript library called Packery that does exactly what you want.
http://packery.metafizzy.co/
EDIT:
, Packery, - Javascript, .
http://jsfiddle.net/s9crmo9d/8/
<div id="container" class="js-packery"
data-packery-options='{ "itemSelector": ".item", "gutter": 10 }'>
<div class="item red small"></div>
<div class="item green large"></div>
<div class="item orange small"></div>
<div class="item red large"></div>
<div class="item green large"></div>
<div class="item orange large"></div>
<div class="item red large"></div>
<div class="item green large"></div>
<div class="item orange small"></div>
</div>
, CSS.
flexbox/CSS ?