Просто дайте элементу содержимого перед нижним колонтитулом вычисленную минимальную высоту (с учетом фиксированной высоты всех элементов). Если вы разместите полный код html, вам будет проще помочь ...
[edit] Пример кода -> при условии, что у вас есть заголовок высотой 80px (который не содержится внутри div.content ) и нижний колонтитул высотой 100px, вы можете задать для контейнера минимальную высоту, равную высоте области просмотра (vh) минус 180px (80px верхнего колонтитула + 100px нижнего колонтитула):
.header
{
height:80px;
}
.footer
{
height:100px;
}
.container
{
min-height:calc(100vh - 180px);
}
для html код страницы, который будет выглядеть следующим образом:
<div class="header"></div>
<div class="container"></div>
<div class="footer"></div>
Если вы хотите сохранить верхний и нижний колонтитулы без фиксированной высоты, чем просто использовать flex-box (для этого требуется элемент-обертка, это может быть тоже ):
.flex-wrapper
{
display: flex;
flex-direction: column;
height: 100vh;
}
.header
{
// whatever
}
.footer
{
// whatever
}
.container
{
flex:1;
}
это будет работать с этой html структурой:
<div class="flex-wrapper">
<div class="header"></div>
<div class="container"></div>
<div class="footer"></div>
</div>