Автопоток CSS-сетки: плотный не работает

Вы можете думать об этом, как будто мы загружаем несколько изображений (могут быть разных размеров) на 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;
}

Автопоток CSS-сетки: плотный не работает

Угадай, что вызывает какие-то проблемы

Developer 16.08.2018 19:20

@ Предложения разработчика, пожалуйста?

Yashwardhan Pauranik 16.08.2018 19:21

Я тоже пытаюсь со своей стороны, можете ли вы пойти по гибкому методу?

Developer 16.08.2018 19:24

Да, без проблем ... вы можете попробовать сделать это в коде и сохранить или опубликовать свой рабочий ответ?

Yashwardhan Pauranik 16.08.2018 19:25

Не зря, но я думаю, что FB поддерживает масштаб, а затем обрезает превью. Таким образом, вы никогда не получите прямоугольник, который аккуратно вписывается в сетку, состоящую только из квадратов, и наоборот, вы никогда не получите квадрат, который аккуратно вписался бы в сетку прямоугольников. Я бы хотя бы рассмотрел возможность того, что это не проблема макета, а проблема предварительного просмотра изображения.

Mark Carpenter Jr 16.08.2018 20:49

@Mark Carpenter Jr, не могли бы вы предложить что-нибудь, чтобы исправить

Yashwardhan Pauranik 17.08.2018 05:24

Я просто немного увеличил изображение и обрезал его.

Mark Carpenter Jr 17.08.2018 14:24
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Ангулярный шаблон для бронирования путешествий
Toor - Travel Booking Angular Template один из лучших Travel & Tour booking template in the world. 30+ валидированных HTML5 страниц, которые помогут...
3
7
1 761
1

Ответы 1

Достаточно простой CSS может сделать это в зависимости от ваших требований.

#container {
   column-count:4;
   column-gap: 0;  

   .img-card {
     width:100%;
   }
}

Пример:https://stackblitz.com/edit/responsive-image-cols

Используя ваш метод, изображения поступают правильно, но все еще не то, что я хотел ... в любом случае, спасибо

Yashwardhan Pauranik 17.08.2018 07:44

Другие вопросы по теме