Изображения нелепо сложны в макетах Grid и Flex. Я не уверен, что это потому, что Grid и Flex являются новыми технологиями, а браузеры еще не полностью адаптировали их к давнему тегу <img>
. Или, может быть, это что-то еще. Но суть: это отстой в работе с изображениями в технологиях CSS3. При тестировании каждой перестановки в каждом крупном браузере нужно пробовать разные вещи, потому что нет гарантии согласованности.
Одна вещь, которую я выучил за годы , которая очень помогает , это никогда не делайте изображение в виде сетки или гибкого элемента. Другими словами, никогда не делайте изображение дочерним по отношению к контейнеру. Дайте изображению свой собственный контейнер, сделав этот элемент предметом. Как только вы сделаете это, многие вещи, как правило, встают на свои места.
Вот пересмотренная версия вашего кода (без изменений HTML):
Протестировано в Chrome, Firefox и Edge.
.image-box {
height: 50vh;
border: 2px solid red;
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-rows: 1fr 1fr 1fr;
grid-template-areas:
" demo1 image demo2 "
" demo1 image demo2 "
" demo1 image demo2 ";
}
.image-box > div:first-child {
grid-area: demo1;
background-color: lightgreen;
}
.image-box > div:nth-child(2) {
grid-area: image;
min-width: 0;
}
img {
width: 100%;
height: 100%;
object-fit: cover;
}
.image-box > div:last-child {
grid-area: demo2;
background-color: aqua;
}
.app-container {}
.info {}
<div class="app-container">
<div class="info">
<div class="image-box">
<div>demo item 1</div>
<div><img src="https://images.unsplash.com/photo-1482003297000-b7663a1673f1?ixlib=rb-1.2.1&q=85&fm=jpg&crop=entropy&cs=srgb&ixid=eyJhcHBfaWQiOjE0NTg5fQ">
</div>
<div>demo item 2</div>
</div>
</div>
</div>