This is a similar question to Can you make a flexbox child expand to fit parent but not contents?, however, that solution doesn't work for me.
I have a layout such that the whole page should always fit on screen (between header and footer), and if contents is too large, then its container should scroll. (Basically the last example from: https://css-tricks.com/snippets/css/a-guide-to-flexbox/)
I already tried the solution from the question I linked above:
#chat {
background-color: #ceecf5;
flex-grow: 1;
overflow: auto;
}
But the parent is still being stretched off the page.
If I set a manual height to #chat
it works correctly, but then it only fits correctly for the screen size I made it on, so I want an automatic height.
#flex-container {
display: flex;
flex-flow: column nowrap;
justify-content: flex-start;
min-width: 300px;
flex: 1;
}
#header {
height: 50px;
display: flex;
align-items: center;
justify-content: center;
background-color: red;
}
#column-flex-container {
display: flex;
flex-flow: row wrap-reverse;
justify-content: space-between;
flex: 1 1 auto;
align-items: stretch;
}
.column {
display: flex;
align-items: flex-start;
justify-content: center;
width: 300px;
overflow: auto;
background-color: aqua;
}
#chat {
background-color: #ceecf5;
flex-grow: 1;
overflow: auto;
}
#main-column {
flex: 1 1 auto;
background-color: azure;
}
#footer {
height: 50px;
background-color: red;
}
html,
body {
margin: 0;
display: flex;
min-height: 100vh;
flex-direction: column;
}
<div id="flex-container">
<div id="header"></div>
<div id="column-flex-container">
<div class="column side-column">
<div id="chat">
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
<div class="message">Sender: Message</div>
</div>
</div>
<div id="main-column" class="column"></div>
<div class="column side-column"></div>
</div>
</div>
<div id="footer" />