Проще всего это реализуется с помощью css columns.
Если блоки случайны, то грид без js вам не поможет.
https://medium.com/@andybarefoot/a-masonry-style-l...
Если можно задать высоту, то на флексах норм. Но в продакшене вряд ли.
В остальных случаях masonry, isotope и т.д.