I am working on a SPA application that will also have a responsive design.
The plan is to have a fixed height header (30px), then filled content and a fixed header (20px). Just like TableLayoutPanel (Absolute: 30, Percent: 100%, Absoulte: 20) in winforms.
The content area fills all available space due to the size of the viewport and does not cause overflow to display the browser scroll bar. Instead, the content area has an internal scroll bar. All content is loaded in this area, so if necessary it will show a scroll bar.

When I searched and chatted with SO friends, I came up with this solution:
<div class="shell">
<header class="shell-header">Header Info</header>
<div class="main-row">
<div class="main-scroll">
<section class="main"
data-bind="router: { transition: 'entrance', cacheViews: true }">
</section>
</div>
</div>
<footer class="shell-footer">Footer Info</footer>
And these are the styles:
.shell {
height: 100%;
display: table;
width: 100%;
}
.shell-header {
width: 100%;
display: table-row;
height: 30px;
}
.shell-footer {
width: 100%;
display: table-row;
height: 20px;
}
.main-row {
display: table-row;
height: 100%;
width: 100%;
}
.main-scroll {
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
box-sizing: border-box;
background-color: #F5F5F5;
display: block;
height: 100%;
margin: auto;
max-width: 1100px;
position: relative;
width: 100%;
overflow-y: auto;
overflow-x: hidden;
}
.main {
height: 100%;
background-color: whitesmoke;
max-width: 1100px;
width: 100%;
position: absolute;
display: block;
}
Firefox Chrome, .
IE 10 div class="main-scroll" , - 0px .
1: ?
2: IE10?