I have a page with a collapsible menu on the left and a box on the right (.log-display
) that should be scrollable, but for some reason the content keeps stretching the parent container (.logviewer-container
).
When I resize the browser .logviewer-container
should stretch to fill the browser and never exceed the window size.
The problem goes away when I replace the .main-container { display: flex}
with display: block
but the project I'm working on requires that containers should be displayed using flex
.
Any ideas?
.html, .body {
width: 100%;
height: 100%;
position: fixed;
}
.main-container {
display: flex;
max-width: 100%;
flex-direction: row;
}
.menu {
display: flex;
flex: 0 0 auto;
overflow: hidden;
width: 0;
-webkit-transition: width 0.5s ease-in-out;
-moz-transition: width 0.5s ease-in-out;
-o-transition: width 0.5s ease-in-out;
transition: width 0.5s ease-in-out;
}
.menu.expanded {
width: 110px;
}
.collapser {
display: flex;
align-items: center;
flex: 0 0 auto;
width: 10px;
background-color: gray;
}
.collapser p {
cursor: pointer;
color: white;
margin: 0;
}
.logviewer-container {
display: flex;
flex: 1;
flex-direction: column;
border: 1px solid darkgray;
}
.toolbar {
display: flex;
flex: 0 0 25px;
background-color: lightblue;
flex-direction: row;
}
.log-display {
display: flex;
flex: 1 1 auto;
overflow: auto;
flex-direction: column;
}
.line {
flex: 0 0 auto;
height: 16px;
font-size: 11px;
font-family: Monaco, monospace;
}
.row-number {
padding-right: 6px;
margin-right: 6px;
width: 50px;
color: #859900;
border-right: 1px dotted #859900;
text-align: end;
}
.row-content {
white-space: pre;
}
<!DOCTYPE html>
<html>
<head>
<title>Foo</title>
<body>
<div class="main-container">
<div class="menu expanded">
<ul>
<li>Item 1</li>
<li>Item 2</li>
<li>Item 3</li>
<li>Item 4</li>
<li>Item 5</li>
<li>Item 6</li>
</ul>
</div>
<div class="collapser">
<p><</p>
</div>
<div class="logviewer-container">
<div class="toolbar"></div>
<div class="log-display">
<div class="line">
<div class="row-number">1</div>
<div class="row-content">22:21:18 | Lorem Ipsum | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum</div>
</div>
<div class="line">
<div class="row-number">2</div>
<div class="row-content">22:21:18 | Lorem Ipsum | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum</div>
</div>
<div class="line">
<div class="row-number">3</div>
<div class="row-content">22:21:18 | Lorem Ipsum | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum</div>
</div>
<div class="line">
<div class="row-number">4</div>
<div class="row-content">22:21:18 | Lorem Ipsum | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum</div>
</div>
<div class="line">
<div class="row-number">5</div>
<div class="row-content">22:21:18 | Lorem Ipsum | Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum</div>
</div>
</div>
</div>
</div>
</body>
</html>