You can use CSS Grid Layout. Support is rather wide at the moment: check it on caniuse.
Here is the example on jsfiddle. Also example with tons of text stuff.
HTML code:
<div class="container">
<div class="header">
Header
</div>
<div class="content">
Content
</div>
<div class="footer">
Footer
</div>
</div>
CSS Code:
html, body {
width: 100%;
height: 100%;
margin: 0;
}
.container {
width: 100%;
height: 100%;
display: grid;
grid-template-rows: 100px auto 150px;
grid-template-columns: auto;
}
// style stuff