I figured it out. It's okay, except there doesn't seem to be a nice way of automagically aligning to the header height. You pretty much have to set the "top" property to the height of your header.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="content-type" content="text/html; charset=windows-1250"> <meta http-equiv="x-ua-compatible" content="IE=8"> <style type="text/css"> *{ box-sizing: border-box; } .container{ border: 3px solid red; margin: 5px; position: absolute; bottom:0px; top:0px; left:0px; right:0px; } .header{ border: 3px solid green; margin: 5px; height: 200px; position: relative; } .tableContainer{ border: 3px solid blue; position: absolute; margin: 5px 5px 5px 5px; bottom:0px; top:210px; /* Required for positioning. Could tie this with javascript to make it work */ left:0px; right:0px; overflow: auto; } .tableMock{ height:400px; background-color: #3399ff; width: 100%; color: white; text-align: center; font-weight: bold; font-size: 30px; font-family: arial, helvetica, 'san-serif'; padding: 30px; } </style> </head> <body> <div class="container"> <div class="header"></div> <div class="tableContainer"> <div class="tableMock"> The table here could be as tall or short as you want. If it is larger than the containing div, scroll bars will appear (x and y). Otherwise no matter how large the screen gets, the containing div will always take up as much of it as it can. </div> </div> </div> </body> </html>