You can use flex or grid :
flex example
body{
margin:0;
}
.wrapper {
height:100vh;
display:flex;
flex-direction:column;
}
.content {
flex:1;
overflow:auto;
}
/* demo purpose */
.content:hover:before {
content:'';
display:block;
padding-top:150vh;
}
<div class="wrapper">
<div class="header">Header of any size</div>
<div class="content" >
Content
</div>
<div class="footer">Footer of any size </div>
</div>
and grid
body {
margin:0;
}
.wrapper {
height:100vh;
display:grid;
grid-template-rows:auto 1fr auto ;
}
.content {
overflow:auto;
}
/* demo purpose */
.content:hover:before {
content:'';
display:block;
padding-top:150vh;
}
<div class="wrapper">
<div class="header">Header of any size</div>
<div class="content" >
Content
</div>
<div class="footer">Footer of any size </div>
</div>
tutorials/reminders :