У меня похожий случай в моем проекте:
<!DOCTYPE html>
<html>
<head>
<title></title>
<style type="text/css">
.wrapper {
display: flex;
width: 600px;
height: 300px;
}
.container {
display: flex;
width: 100%;
}
img {
height: 100%;
}
</style>
</head>
<body>
<div class="wrapper">
<div class="container">
<div class="image-wrapper">
<img src="https://placehold.co/200x600">
</div>
<h2>text</h2>
</div>
<div>
test
</div>
</div>
</body>
</html>
У меня есть контейнер фиксированной ширины (.container
), который устанавливает высоту своих дочерних элементов так, чтобы она соответствовала его собственной высоте (из-за align-items: stretch;
по умолчанию).В одном из этих контейнеров у меня есть изображение (<img>
), которое я хочу иметь ту же высоту, что и его родитель (.image-wrapper
), сохраняя при этом пропорции.В демоверсии это происходит, но ширина .image-wrapper
не обновляется.По крайней мере, не всегда ...
Иногда изображение выглядит так ( неверно ):

... а иногда это выглядит так ( правильно ):

Я думаю, что это связано сбраузер не обновляет ширину .image-wrapper
.В неправильном сценарии он имеет ширину 200
(исходный размер изображения-заполнителя), но после изменения размера изображения до 100x300 (из-за его height: 100%
и его родителя 300px
при естественном размере200x600) ширина родительского элемента не обновляется, чтобы отразить это.Он должен измениться с 200
на 100
, теперь размер изображения теперь изменен.
Одна странность в том, что если размер неправильный и вы добавляете width: 100%
к .image-wrapper
в инспекторе, а затем удаляетеего ширина обновляется и теперь отображается правильно.
Если вы загрузите фрагмент и откроете его в браузере, вы должны видеть, что изображение отображается неправильно, пока вы не откроете DevTools и не отключите кэш.После этого (поскольку загрузка изображения занимает некоторое время, я полагаю), ширина устанавливается правильно при обновлении.
Это происходит в последних версиях Chrome, Firefox и IE11 в Windows 10. Вот скрипка тоже.
Почему это происходит?Как это исправить?