Я хотел бы опубликовать свое решение, поскольку мне потребовалось некоторое время, чтобы заставить мой код работать, и, возможно, кто-то найдет это полезным, несмотря на то, что это старая тема ...
У меня была похожая проблема. Изображение переполняется из родительского блока flex-child. Это произошло только в Chrome и Opera (браузеры webkit), trident и gecko были достаточно умны, чтобы справиться с ситуацией. Здесь я попробовал несколько решений по переполнению стека, но ни одно из них не дало прямого решения, поэтому я изобрел обходной путь, добавив еще один слой контейнера между вышеупомянутым изображением и родителем. В ситуации, представленной на вводном посте, это будет выглядеть так:
<style>
html, body { height: 100%; width: 100%;}
#div1 {height:50%; min-height:200px;background-color:red; position: relative;}
#div_fix {position: absolute; height: 100%; width: 100%;}
#div2 {height:100%; background-color:black;}
</style>
<body>
<div id="div1"><div id="div_fix"><div id="div2"></div></div></div>
</body>
Что это делает, это создает контейнер (#div_fix), который получает статическую высоту и ширину, которые затем могут быть должным образом использованы в webkit для вычисления правильной высоты в # div2.
Обратите внимание, что положение: относительное и положение: абсолютные свойства обязательны для его работы.
И да, это выглядит плохо, но выполняет свою работу:)