Пересмотр этого на 2017 год. С помощью flexbox это теперь можно сделать без необходимости явно определять высоту верхнего и нижнего колонтитула. Это работает, по крайней мере с префиксом, во всех браузерах, которые в настоящее время имеют значительную долю рынка, кроме IE <= 10, доля которого все еще составляет 1-5% в зависимости от того, кого вы спрашиваете. Поскольку это, как правило, механизм наглядности и удобства использования, который не блокирует функциональность, использование flexbox для этого случая должно как минимум сделать вашу страницу пригодной для использования пользователями неподдерживаемых браузеров. </p>
Все, что вам нужно сделать, - это обернуть ваш заголовок, содержимое и нижний колонтитул в div, который имеет явную высоту (например, тело или дочерний элемент с высотой 100%) со стилями:
display: flex;
flex: auto;
flex-direction: column;
И применить стиль к прокручиваемой панели:
overflow-y: auto;
Если вы хотите, чтобы прокручиваемая панель увеличивалась, чтобы использовалось все вертикальное пространство:
flex-grow: 1;
и в верхнем и нижнем колонтитулах (необходимо для Safari и IE 10):
flex-grow: 0;
https://jsfiddle.net/ornsk10a/