/ / Dwa divy dynamicznie wypełniają wysokość rzutni - html, css, flexbox

Dwa elementy div dynamicznie wypełniają wysokość rzutni - html, css, flexbox

Mam problem z próbą ułożenia tego zestawu #container powinien być dokładnie taki height z viewport, #caption powinien take as much height as it needsi img in #image powinien fill the remaining height (zachowując proporcje). Nigdy nie powinien #container przekroczyć rzutnię height.

<div id="container">
<div id="image">
<img src="/images/my-image.jpg" alt="my-image">
</div>
<div id="caption">
<p>
Some info about this image.<br>
Sometimes this could be two lines.<br>
Maybe even three.
</p>
</div>
</div>

Oto przykład, jak to działa dynamicznie:

wprowadź opis obrazu tutaj

Jakieś sugestie? Bawiłem się flexem i stawiam też, ale bezskutecznie, strona zawsze kończy się powyżej widoku height.

Odpowiedzi:

2 dla odpowiedzi № 1

możesz użyć flexbox za to

i możesz potrzebować zapytań o media.

body {
margin: 0
}
#container {
display: flex;
flex-direction: column;
height: 100vh
}
#caption {
flex: 1;
background: red
}
img {
display: block;
margin: auto
}
<div id="container">
<div id="image">
<img src="/images///lorempixel.com/300/500" alt="my-image">
</div>
<div id="caption">
<p>
Some info about this image.
<br>Sometimes this could be two lines.
<br>Maybe even three.
<br>
</p>
</div>
</div>