Есть ul с такими стилями:
.li {
float: left;
margin-bottom: 10px;
}
.li:first {
clear: both;
}
Проблема в том, что если какой-то из li занимает больше места по вертикали, чем другие в строке, то отступ для менее высоких будет равен 10px + разница их высоты с самым 'высоким'.
А что хотелось бы видеть:
В вашем случае нужно использовать библиотеку Masonry
Не знаю подойдёт ли, но это можно точно решить с помощью flexbox (вот здесь хорошая статья, возможно старовата)
Единственное: с поддержкой браузерами не всё гладко - только современные, а IE 11 вообще частично :(
Сборка персонального компьютера от Artline: умный выбор для современных пользователей