How can I specify a CSS/HTML layout that works in all modern browsers and will push components to the edges of available space and provide a central area that is maximized - minus the edge components sizes. Something like this:
------------------------------
| | north | |
| | | |
------------------------------
| | | |
| | | |
| | | |
|west| center |east |
| | | |
| | | |
| | | |
| | | |
------------------------------
| | south | |
| | | |
------------------------------
The goals is that the space available to the center component is dictated by the actual size of the content in the north,south,east and west areas.
Is this possible to solve with pure CSS/HTML without any JS?
This html achieves the goal in Firefox and Webkit, but in IE9, the center div does not get access to the available vertical space.
<!doctype html>
<html>
<head>
</head>
<body>
<div
style="position: absolute; top: 20px; left: 20px; width: 200px; height: 200px;">
<table style="width: 100%; height: 100%; border:1px solid gray; border-collapse:collapse;cell-padding:0px;">
<colgroup>
<col style="width: 1%" />
<col style="width: 100%" />
<col style="width: 1%" />
</colgroup>
<tbody>
<tr height="1%">
<td></td>
<td>north</td>
<td></td>
</tr>
<tr height="100%">
<td>west</td>
<td><div style="width:100%;height:100%;border:1px solid green;">center</div></td>
<td>east</td>
</tr>
<tr height="1%">
<td></td>
<td>south</td>
<td></td>
</tr>
</tbody>
</table>
</div>
</body>
</html>