Why is it, that every time a browser (mozilla) releases an new version, then IE releases a new version, CSS/HTML stops working? A rhetorical question, but IE is

me off!
I have pages with nested DIVS, just standard, not floating. They now/still work perfectly with all the browsers -except- IE.
Code:
HTML:
<body>
<div id=background>
<div id=header>
</div>
<div id=navbar>
</div>
<div id=content>
</div>
<div id=footer>
</div>
</div>
</body>
Code:
CSS:
html {
height:100%; /* fix height to 100% for IE */
max-height:100%; /* fix height for other browsers */
padding:0;
margin:0;
border:0;
overflow:hidden; /*get rid of scroll bars in IE */
}
body {
height:100%;
max-height:100%;
overflow:hidden;
padding:0;
margin:0;
border:0;
}
div#background {
position: absolute;
height: 100%;
width: 100%;
overflow: auto;
}
div#header, div#footer {
padding: 0px;
margin: 0px;
width: 100%;
text-align: center;
vertical-align: middle;
}
div#header {
display: block;
position: fixed;
height: 20px;
font-weight: normal;
font-size: 4em;
outline-color: black;
outline-width: 1px;
z-index: 99;
margin-top: -30px;
}
div#navbar {
display: block;
position: fixed;
width: 100%;
height: 80px;
font-family: arial;
white-space: nowrap;
margin-left: -10px;
margin-top: 40px;
margin-bottom: 0px;
padding-bottom: 5px;
vertical-align: middle;
text-align: center;
font-weight: bold;
z-index: 98;
}
#content {
display:block;
height:80%;
max-height:80%;
overflow:auto;
position:relative;
z-index:3;
margin-left: 10px;
margin-right: 10px;
margin-top: 85px;
}
div#footer {
height: 25px;
vertical-align: bottom;
}
(I've stripped out everything that's not to do with positioning)
With all browsers - except IE, this works fine, the "background" manages the height and width of the window and everything else appears as a "child" inside the background, with IE, the "header" and "footer" are pushed outside the "background" box.
How can I force IE to use the "background" div as the parent?
See the attached images for what I'm trying to explain.