такой вариант не подойдет
<style type='text/css'>
.wrap {
height:300px;
width:300px;
position:relative;
border: 1px solid;
}
.top {
height: 50px;
background: #eee;
}
.center {
position:absolute;
width: 100%;
left: 0;
top: 50px;
bottom: 40px;
background: #00f;
}
.bottom {
position: absolute;
width: 100%;
left: 0;
bottom: 0;
height: 40px;
background: #f00;
}
</style>
<div class=wrap>
<div class=top>123</div>
<div class=center>456</div>
<div class=bottom>789</div>
</div>