Я бы рекомендуем использовать изотоп вместо масонства, поскольку он более продвинутый! и он очень похож на кладке, ваш HTML будет что-то вроде этого:
<div class="grid">
<div class="item"> <img src="test.jpg"> </div>
<div class="item"> <img src="test.jpg"> </div>
<div class="item"> <img src="test.jpg"> </div>
<div class="item"> <img src="test.jpg"> </div>
</div>
если вы хотите 3 колонки, то CSS будет таким:
.item {
float: left;
width: 33.33%;
}
.item img {
width: 100%;
display: block;
}
, а затем в JS вам нужно инициализировать Изотоп, а также обновить макет, когда изображение загружается, вам потребуется помощь плагин imagesLoaded, он должен выглядеть примерно так:
jQuery(document).ready(function(){
// Initialize Isotope
$('.grid').isotope({
itemSelector: '.item',
percentPosition: true,
});
// Refresh the layout of the grid each time an image gets loaded
$('.grid').imagesLoadedMB().progress(function() {
$('.grid').isotope('layout');
});
});
Я лично предпочел бы нам ea плагин, готовый к использованию, как этот: https://codecanyon.net/item/media-boxes-portfolio-responsive-grid/5683020 с этим плагином вы можете указать очень простое пространство между элементами, количеством столбцов на каждом разрешении и т. д., также оно включает в себя возможность добавления фильтров, сортировки и поиска , попробуйте!