Дима: Примеры кода - допиши сам. Да, я не знаю размеров, но я показал механизм как сверстать это на чистом CSS и HTML. Как было сказано выше - человек новичок, поэтому динамическая генерация галлерии на JS не требуется.
Давайте будем использовать CSS таким, каким он задумывался. Мы можем прописать классы для ВСЕХ, что-бы задать одинаковые свойства (например border), а наша цель УНИКАЛЬНО идентифицировать изображения, что-бы задать уникальные значения (например - для каждого изображения свой отступ).
Даже на крупных фирмах используют эту библиотеку, потому что на чистом css подсчитать абсолютную позицию и размер соседних картинок нельзя, поэтому можно и самому написать свой велосипед но всеравно с использованием JS
Алим Алибаев: все очень зависит от конкретной задачи. Скажем можно обойтись flexbox-ами но тогда придется отказаться от поддержки IE (полифилы как бы есть но всеравно все грустно).
demosthenes.info/blog/844/Easy-Masonry-Layout-With... - вот пример на флексбоксах. Чистый CSS, никакого JS но IE10+. Это самый крутой способ из тех что есть сейчас (как с точки зрения простоты реализации так и с точки зрения скорости отрисовки).
Так же еще зависит от размера изображений. Если они вам не известны - становится сложнее задача. Приходится вводить какие-то рамки для изображений, центрировать их, обрезать и т.д.