I'm trying to lay out a simple message container that will scroll when needed. This works as expected when the parent container only contains a header, and the message box, however, when wrapping it in another container and adding a bar on the right the side of the message box, the message box height does not respect the overflow setting and expands past the parent container. How can I get the message box to scroll while using a column next to it?
.flex-container {
display: flex;
}
.flex-fill {
flex: 1 0 auto;
}
.flex-rows {
flex-direction: column;
}
.message-container {
justify-content: flex-end;
overflow-y: auto;
flex: 1;
}
.message {
height: 3rem;
}
<body>
<div class="flex-container flex-fill flex-rows" style="background-color: red; padding: 1rem; height: 500px;">
<div id="top-bar" style="background-color: purple;">
<h3>Working Scroll</h3>
</div>
<div class="message-container" style="background-color: white; padding: 1rem;">
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
</div>
</div>
<div class="flex-container flex-fill flex-rows" style="background-color: green; padding: 1rem; height: 500px;">
<div id="top-bar" style="background-color: purple;">
<h3>Broken Scroll</h3>
</div>
<div class="flex-container flex-fill" style="background-color: blue; padding: 1rem;">
<div class="message-container" style="background-color: white; padding: 1rem;">
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
<div class="message">Testing Message</div>
</div>
<div id="right-bar" style="background-color: orange; width: 50px;">
<h3>Right</h3>
</div>
</div>
</div>
</body>
Here is a CodePen example. https://codepen.io/dwpuush/pen/eYzvQQJ