I have a simple project. I use isotope for masonry grid and Bootstrap 4 (flex):
$(window).on('load', function(){
function gridMasonry(){
var grid = $(".grid")
if( grid.length ){
grid.isotope({
itemSelector: '.grid-item',
percentPosition: true,
layoutMode: 'masonry',
masonry: {
//columnWidth: '.grid-sizer'
}
});
}
}
gridMasonry();
});
.grid-item img {
height: 192px;
width: 100%;
object-fit:cover;
}
.y-2.grid-item img {
height: 400px;
width: 100%;
}
.grid-item {
margin-bottom: 16px;
}
<script src="https://code.jquery.com/jquery-3.1.0.js"></script>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" >
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.isotope/3.0.6/isotope.pkgd.min.js"></script>
<div class="container">
<div class="row grid">
<div class="col-sm-3 grid-item y-2">
<img src="https://dummyimage.com/400x900/000/fff&text=img" alt="" class="img-fluid">
</div>
<div class="col-sm-3 grid-item">
<img src="https://dummyimage.com/400x400/000/fff&text=img" alt="" class="img-fluid">
</div>
<div class="col-sm-6 grid-item y-2">
<img src="https://dummyimage.com/400x400/000/fff&text=img" alt="" class="img-fluid">
</div>
<div class="col-sm-3 grid-item">
<img src="https://dummyimage.com/400x400/000/fff&text=img" alt="" class="img-fluid">
</div>
<div class="col-sm-4 grid-item y-2">
<img src="https://dummyimage.com/400x400/000/fff&text=img" alt="" class="img-fluid">
</div>
<div class="col-sm-4 grid-item y-2">
<img src="https://dummyimage.com/400x400/000/fff&text=img" alt="" class="img-fluid">
</div>
<div class="col-sm-4 grid-item y-2">
<img src="https://dummyimage.com/400x400/000/fff&text=img" alt="" class="img-fluid">
</div>
<!-- <div class="grid-sizer col-4"></div> -->
</div>
</div>
Try and grid-sizer but the blocks still "jump". Last col-sm-4 not correct.
.................................................................................................................................................................................................................... ..................... .....................
Question: How to combine bootstrap 4 columns of different widths (col-) and different height and Isotope masonry grid?
I think you want to use layoutMode fitRows instead...
grid.isotope({
itemSelector: '.grid-item',
percentPosition: true,
layoutMode: 'fitRows',
});
https://codeply.com/go/zNeDtV9nLE
Also note that you must import the other layoutModes separately. It looks like you'll need to play with the other layoutModes ('packery', 'masonry') to see which works best. I'd also use d-block on the row to disable flexbox.
https://codeply.com/go/BB7IVChoXc
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With