У меня есть сайт laravel, который загружает изображения продуктов в грид-контейнер - подгоняет строку через цикл @foreach. Все изображения разных размеров, некоторые портретные, а некоторые пейзажные. Проблема заключается в том, что, поскольку контейнер сетки и элементы сетки реагируют (в процентах от ширины области просмотра), изображения масштабируются непоследовательно. Например, у меня есть изображения, которые в полном размере имеют размеры 3 x 2, 5 x 9 и 8 x 10. Когда они загружены в адаптивную сетку, все они в значительной степени масштабируются до 25% ширины порта просмотра. Результирующий «вид» изображений в сетке отображает изображения размером 5 x 9, которые больше, чем 8 x 10 изображений в масштабе. Искажение является более экстремальным, если вы рассматриваете портретные и пейзажные изображения одинакового размера. Например, 5 x 7 и 7 x 5. Пейзажные изображения масштабируются меньше, чем портретные, потому что все они пытаются заполнить строку в соответствии с фиксированной минимальной шириной пикселя.
Это можно легко исправитьструктурой таблицы, а не адаптивной сеткой, но это недопустимо!
вот цикл PHP
<div class="product-grid-container grid-container--fit">
@foreach($products as $product)
<div class="grid-element">
<a href="/product/{!!$product->id !!}">
<img src="{{ asset($product->image) }}">
</a>
</div>
@endforeach
</div>
и вот CSS
.product-grid-container {
display: grid;
max-width: none;
}
.grid-container--fit {
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
}
.grid-element {
padding: 5%;
color: #fff;
text-align: center;
}
.grid-element img {
max-height: 300px;
max-width: 300px;
object-fit: contain;
}