Se ho capito bene, dovrebbe essere sufficiente inglobare tutto dentro a un div contenitore con altezza pari al 100% dello schermo, al suo interno schiaffare i tre div (top, footer e main) con altezze fisse (i primi due) e posizioni assolute. Il main inizia e finisce laddove iniziano e finiscono gli altri, 100px dall' alto e 30 dal basso, ma essendo inglobato in un contenitore alto per l'appunto 100%, la risoluzione dello schermo diventa secondaria.
Prova un po' così.
codice:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" >
<head>
<title>test</title>
<style>
body {
font-family: verdana, tahoma, arial;
background: #FFF;
}
#container {
overflow: hidden;
width: 100%;
height: 100%;
}
#top {
background: #FFFF00;
position: absolute;
top: 0px;
left: 0px;
width: 100%;
height: 100px;
}
#main {
background: #0060A0;
position: absolute;
width: 100%;
top: 100px;
left: 0px;
bottom:30px;
}
#footer{
background: #FF0000;
position: absolute;
bottom: 0px;
left: 0px;
width: 100%;
height: 30px;
}
</style>
</head>
<body>
<div id="container">
<div id="top">
TOP
</div>
<div id="main">
MAIN
</div>
<div id="footer">
FOOTER
</div>
</body>
</html>