#jquery #bootstrap-4 #jquery-isotope
#jquery #bootstrap-4 #jquery-изотоп
Вопрос:
У меня простой проект. Я использую isotope для masonry grid и 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/fffamp;text=img" alt="" class="img-fluid">
</div>
<div class="col-sm-3 grid-item">
<img src="https://dummyimage.com/400x400/000/fffamp;text=img" alt="" class="img-fluid">
</div>
<div class="col-sm-6 grid-item y-2">
<img src="https://dummyimage.com/400x400/000/fffamp;text=img" alt="" class="img-fluid">
</div>
<div class="col-sm-3 grid-item">
<img src="https://dummyimage.com/400x400/000/fffamp;text=img" alt="" class="img-fluid">
</div>
<div class="col-sm-4 grid-item y-2">
<img src="https://dummyimage.com/400x400/000/fffamp;text=img" alt="" class="img-fluid">
</div>
<div class="col-sm-4 grid-item y-2">
<img src="https://dummyimage.com/400x400/000/fffamp;text=img" alt="" class="img-fluid">
</div>
<div class="col-sm-4 grid-item y-2">
<img src="https://dummyimage.com/400x400/000/fffamp;text=img" alt="" class="img-fluid">
</div>
<!-- <div class="grid-sizer col-4"></div> -->
</div>
</div>
Попробуйте grid-sizer
, но блоки все еще «прыгают». Последнее col-sm-4
неверно.
………………………………………………………………………………………………………………………………………………………………………………………….. ………………… …………………
Вопрос: Как объединить в bootstrap 4 столбца разной ширины (col-) и разной высоты и изотопную сетку кладки?
Ответ №1:
Я думаю, вы хотите использовать layoutMode fitRows
вместо этого…
grid.isotope({
itemSelector: '.grid-item',
percentPosition: true,
layoutMode: 'fitRows',
});
https://codeply.com/go/zNeDtV9nLE
Также обратите внимание, что вы должны импортировать другой layoutModes
отдельно. Похоже, вам нужно будет поиграть с другими режимами компоновки (‘packery’, ‘masonry’), чтобы увидеть, какой работает лучше всего. Я бы также использовал d-block
в строке, чтобы отключить flexbox.
Комментарии:
1. И если разная высота для col-
2. Пожалуйста, добавьте изображения разной высоты к примеру
3. На самом деле ваши изображения недостаточно широкие, чтобы видеть, что столбцы заполняют правильную ширину: codeply.com/go/BB7IVChoXc
4. Isotope нарушал сетку Bootstrap v4, пока я не переместил селектор контейнера Isotope в тот же элемент, который имеет
.row
класс. Если вы видите, что элементы в вашей сетке неожиданно переносятся после добавления Isotope, попробуйте это.