Naja, ich würd's an Deiner Stelle etwas umgedreht angehen.
Hier mal ein Beispielcode:
<html>
<head>
<style type='text/css'>
html,body{
margin: 0px;
}
div{
width: 600px;
margin-left: auto;
margin-right: auto;
}
#offset{
position:absolute;
left: 50%;
top: 50%;
}
#mitte{
position: absolute;
left: -300px;
top: -150px;
background: cyan;
height: 300px;
}
#oben{
height: 50%;
background: yellow;
}
#unten{
height: 50%;
background: orange;
}
</style>
</head>
<body>
<div id='oben'></div>
<div id='unten'></div>
<div id='offset'>
<div id='mitte'>Inhaltsblock</div>
</div>
</body>
</html>
Oben und Unten beanspruchen hier einfach 50% der Höhe
und somit immer die gesamte vertikale Fläche,
während der Inhaltsblock drübergelegt ist.
Schönen Gruß!
Michael