Take advantage of available viewport space by giving the last element the remaining available space in current viewport, even when resizing the window.
<div class="container">
<div>Div 1</div>
<div>Div 2</div>
<div>Div 3</div>
</div>
html,
body {
height: 100%;
margin: 0;
}
.container {
height: 100%;
display: flex;
flex-direction: column;
}
.container > div:last-child {
background-color: tomato;
flex: 1;
}
Explanation
height: 100%
set the height of container as viewport height.display: flex
enables flexbox.flex-direction: column
set the direction of flex items’ order from top to down.flex-grow: 1
the flexbox will apply remaining available space of container to last child element.
- The parent must have a viewport height.
flex-grow: 1
could be applied to the first or second element, which will have all available space.
Browser support
⚠️ Needs prefixes for full support.