Проблема возникает только на хроме, Fiferox восстанавливает эту скважину
Я думаю, что это было бы так при использовании подгонки объекта ...
object-fit
никогда не изменять высоту / ширину элемента ( CSS-подбор объекта: содержать; сохраняет ширину исходного изображения в макете ). Это свойство полезно только для сохранения соотношения изображения, когда оно искажено ( Подгонка объекта к элементу холста )
Теперь настоящей проблемой является использование height:100%
в этом случае, которое не очень интуитивно понятно. Если мы удалим его, у нас будет следующее:
.row1 {
display:grid;
grid-template-columns:1fr 1fr 1fr;
grid-gap: 5%;
}
img {
object-fit:cover;
width:100%;
}
<div class="container">
<div class="row1">
<div>
<img src="https://placeimg.com/1550/485/any">
<p>
This is some content 1
</p>
<p>
This is a bit longer content that is used to describe something
</p>
<p>
<a href="#">Click Here</a>
</p>
</div>
<div>
<img src="https://placeimg.com/1550/460/any">
<p>
This is some content 2
</p>
<p>
This is a bit longer content that is used to describe something, sometimes it can be really long like this example
</p>
<p>
<a href="#">Click Here</a>
</p>
</div>
<div>
<img src="https://placeimg.com/1550/420/any">
<p>
This is some content 3
</p>
<p>
This is a bit longer content that is used to describe something
</p>
<p>
<a href="#">Click Here</a>
</p>
</div>
</div>
</div>
Обратите внимание, что в этом случае второй столбец имеет наибольшую высоту, поэтому этот столбец определяет высоту дорожек:
![enter image description here](https://i.stack.imgur.com/oDvm0.png)
Теперь height:100%
будет относительно этой высоты, но не будет работать во втором столбце, поскольку создаст цикл, так как этот столбец изначально определял высоту, и только 1-е и 3-е изображение будет растягиваться и текст переполнится. (Firefox растягивает все столбцы, поэтому не уверен, какое поведение будет правильным)
.row1 {
display:grid;
grid-template-columns:1fr 1fr 1fr;
grid-gap: 5%;
}
img {
object-fit:cover;
height:100%;
width:100%;
}
<div class="container">
<div class="row1">
<div>
<img src="https://placeimg.com/1550/485/any">
<p>
This is some content 1
</p>
<p>
This is a bit longer content that is used to describe something
</p>
<p>
<a href="#">Click Here</a>
</p>
</div>
<div>
<img src="https://placeimg.com/1550/460/any">
<p>
This is some content 2
</p>
<p>
This is a bit longer content that is used to describe something, sometimes it can be really long like this example
</p>
<p>
<a href="#">Click Here</a>
</p>
</div>
<div>
<img src="https://placeimg.com/1550/420/any">
<p>
This is some content 3
</p>
<p>
This is a bit longer content that is used to describe something
</p>
<p>
<a href="#">Click Here</a>
</p>
</div>
</div>
</div>
![enter image description here](https://i.stack.imgur.com/QHbvv.png)
Вы можете уменьшить содержимое второго столбца, и поведение изменится, так как другой столбец будет определять высоту, а изображение внутри другого будет растягиваться.
.row1 {
display:grid;
grid-template-columns:1fr 1fr 1fr;
grid-gap: 5%;
}
img {
object-fit:cover;
height:100%;
width:100%;
}
<div class="container">
<div class="row1">
<div>
<img src="https://placeimg.com/1550/485/any">
<p>
This is some content 1
</p>
<p>
This is a bit longer content that is used to describe something
</p>
<p>
<a href="#">Click Here</a>
</p>
</div>
<div>
<img src="https://placeimg.com/1550/460/any">
<p>
This is some content 2
</p>
<p>
<a href="#">Click Here</a>
</p>
</div>
<div>
<img src="https://placeimg.com/1550/420/any">
<p>
This is some content 3
</p>
<p>
This is a bit longer content that is used to describe something
</p>
<p>
<a href="#">Click Here</a>
</p>
</div>
</div>
</div>
Если вы хотите, чтобы высота вашего изображения была одинаковой, вам может потребоваться изменить структуру вашего HTML-кода, чтобы сделать изображение частью сетки и легко растянуть их до той же высоты, которую вы определили. Это будет работать одинаково во всех браузерах, так как не зависит от странного поведения в процентах от высоты.
.row1 {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 150px auto; /*set the width you want*/
grid-gap: 5%;
}
img {
object-fit: cover;
width: 100%;
height:100%;
order:-1;
}
<div class="container">
<div class="row1">
<img src="https://placeimg.com/1550/485/any">
<div>
<p>
This is some content 1
</p>
<p>
This is a bit longer content that is used to describe something
</p>
<p>
<a href="#">Click Here</a>
</p>
</div>
<img src="https://placeimg.com/1550/460/any">
<div>
<p>
This is some content 2
</p>
<p>
<a href="#">Click Here</a>
</p>
</div>
<img src="https://placeimg.com/1550/420/any">
<div>
<p>
This is some content 3
</p>
<p>
This is a bit longer content that is used to describe something
</p>
<p>
<a href="#">Click Here</a>
</p>
</div>
</div>
</div>