Вы можете думать об этом, как будто мы загружаем несколько изображений (могут быть разных размеров) на Facebook, и они красиво отображают их в своей ленте новостей.
У меня есть контейнер .wrapper, он содержит коробку макета CSS-grid с классом .card-img-grid. Он может иметь максимум 4 изображения, но они будут разных width и height, то есть некоторые будут иметь квадратную форму, некоторые будут длинными в любом направлении (вертикальном или горизонтальном). Полностью зависит от того, как пользователь загрузил.
Моя проблема связана с разницей в размере сетки изображений, создающей белые промежутки, которые разрушают мой полный UX. Пожалуйста, помогите мне, как я могу это исправить или есть другой способ добиться макета типа Facebook для нескольких изображений?
Я хочу, чтобы сетка настраивалась сама по себе в соответствии с изображениями. Также я не могу использовать grid-column: span 2;grid-row: span 2; как свойства, потому что я не знаю, насколько большие или маленькие изображения. Рабочий код демонстрация
Мой угловой шаблон
<div class = "card-img-grid">
// Loop will be displaying only 4 images, but can have different size
<ng-container *ngFor = "let img of feed.images | slice: 0 : 4">
<div class = "img-grid-item">
<img class = "w-100" [src] = "img.url"> // .w-100 sets width: 100%
</div>
</ng-container>
</div>
Код CSS
.wrapper {
max-width: 500px;
}
.card-img-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
grid-gap: 4px;
grid-auto-flow: dense;
margin: 14px 0 5px;
}
.card-img-grid .img-grid-item {
overflow: hidden;
cursor: pointer;
}
@ Предложения разработчика, пожалуйста?
Я тоже пытаюсь со своей стороны, можете ли вы пойти по гибкому методу?
Да, без проблем ... вы можете попробовать сделать это в коде и сохранить или опубликовать свой рабочий ответ?
Не зря, но я думаю, что FB поддерживает масштаб, а затем обрезает превью. Таким образом, вы никогда не получите прямоугольник, который аккуратно вписывается в сетку, состоящую только из квадратов, и наоборот, вы никогда не получите квадрат, который аккуратно вписался бы в сетку прямоугольников. Я бы хотя бы рассмотрел возможность того, что это не проблема макета, а проблема предварительного просмотра изображения.
@Mark Carpenter Jr, не могли бы вы предложить что-нибудь, чтобы исправить
Я просто немного увеличил изображение и обрезал его.






Достаточно простой CSS может сделать это в зависимости от ваших требований.
#container {
column-count:4;
column-gap: 0;
.img-card {
width:100%;
}
}
Пример:https://stackblitz.com/edit/responsive-image-cols
Используя ваш метод, изображения поступают правильно, но все еще не то, что я хотел ... в любом случае, спасибо
Угадай, что вызывает какие-то проблемы