JSFiddle - React, Tailwind, and code Playground
HTML
<body ng-cloak>
<div id="header">Header</div>
<div id="main">
<div id="left" class="panel">
<div class="largeChild"></div>
<div class="largeChild"></div>
<div class="largeChild"></div>
</div>
<div id="center" class="panel">
<div class="largeChild"></div>
<div class="largeChild"></div>
<div class="largeChild"></div>
</div>
<div id="right" class="panel">
<div class="largeChild"></div>
<div class="largeChild"></div>
<div class="largeChild"></div>
</div>
</div>
<div id="footer">Footer</div>
</body>
CSS
* {
box-sizing: border-box;
}
html, body {
margin: 0;
height: 100vh;
width: 100vw;
display: flex;
display: -webkit-flex;
flex-direction: column;
-webkit-flex-direction: column;
background-color: blue;
}
#header, #footer {
flex: 0 0 100px;
-webkit-flex: 0 0 100px;
background-color: blue;
}
#main {
background-color: yellow;
flex: 1 0 0px; /** Don't set parent of component to auto */
-webkit-flex: 1 0 0px; /** Don't set parent of component to auto */
display: flex;
display: -webkit-flex;
flex-direction: row;
-webkit-flex-direction: row;
}
.panel {
display: flex;
display: -webkit-flex;
flex-direction: column;
-webkit-flex-direction: column;
flex: 1 0 auto;
-webkit-flex: 1 0 auto;
overflow: auto;
}
#left.panel {
background-color: red;
flex: 0 0 200px;
-webkit-flex: 0 0 200px;
}
#right.panel {
background-color: gray;
flex: 0 0 200px;
-webkit-flex: 0 0 200px;
}
.largeChild {
margin: 5px;
padding: 5px;
min-height: 500px;
min-width: 10px;
background-color: green;
}