Я бы использовал display: table; макет для тела или обертки, и дает средний ряд сто процентов высоты.
Вот так .-
<body>
<div>
<div id=head">head</div>
</div>
<div>
<div id=body">body</div>
</div>
<div id=head">
<div id="foot">foot</div>
</div>
</body>
Со следующим CSS.
html, body
{
height:100%;
}
body
{
width:100%;
display:table;
}
body > div
{
display:table-row;
}
body > div > div
{
display:table-cell;
}
#body
{
height:100%;
}