Chance,
Here's something a reworked from CSS Jeff & I did for the Direct Line website many moons ago (it's still there if you happen to try and get a quote!).
I've tested this under every browser I have working perfectly:
Windows XP
==========
Fx 1.5.0.12
Netscape 7.1
IE 6
IE 7
Opera 8.52
Opera 9.00
Mac OS X
========
Safari 2.0.4
Firefox 1.0.7
Firefox 1.5.0.11
Firefox 2.0.0.4
Opera 6.03
Opera 7.54 u1
Opera 9.2
Netscape 7.1
Mozilla 1.7.13
Camino 1.0.3
For Mac IE 5.2.3 (the latest release), the fixed positioning does not work, but degrades nicely (with all elements scrolling as usual).
Here's the code:
Code:
<!-- enable quirks mode -->
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "[URL unfurl="true"]http://www.w3.org/TR/html4/loose.dtd">[/URL]
<html lang="en">
<head>
<title>Page title</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<style type="text/css">
html, body {
margin: 0px;
padding: 0px;
}
#header {
height: 50px;
width: 100%;
background-color: gold;
overflow: visible;
position: absolute;
top: 0px;
left: 0px;
z-index: 1;
}
#leftNav {
width: 150px;
background-color: teal;
overflow: visible;
position: absolute;
top: 50px;
left: 0px;
z-index: 1;
}
@media screen {
body > div#header {
position: fixed;
}
body > div#leftNav {
position: fixed;
}
}
body {
padding-top: 50px;
}
#content {
padding-left: 150px;
}
#footer {
background-color: red;
}
</style>
<!--[if lt IE 7]>
<style type="text/css">
body {
_height: 100%;
_overflow: hidden;
}
#bodySection {
_width: 100%;
_height: 100%;
_overflow: auto;
}
</style>
<![endif]-->
</head>
<body>
<div id="extradiv1"></div>
<div id="header">
Header goes here...
</div>
<div id="leftNav">
Left Nav Item 1 <br>
Left Nav Item 2 <br>
Left Nav Item 3 <br>
Left Nav Item 4 <br>
Left Nav Item 5 <br>
Left Nav Item 6 <br>
Left Nav Item 7 <br>
Left Nav Item 8 <br>
Left Nav Item 9 <br>
Left Nav Item 10 <br>
</div>
<div id="bodySection">
<div id="content">
Top Line 1: Lorum ipsum dolor sit amet <br>
Top Line 2: Lorum ipsum dolor sit amet <br>
Top Line 3: Lorum ipsum dolor sit amet <br>
Top Line 4: Lorum ipsum dolor sit amet <br>
Top Line 5: Lorum ipsum dolor sit amet <br>
Top Line 6: Lorum ipsum dolor sit amet <br>
Top Line 7: Lorum ipsum dolor sit amet <br>
Top Line 8: Lorum ipsum dolor sit amet <br>
Top Line 9: Lorum ipsum dolor sit amet <br>
Top Line 10: Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Lorum ipsum dolor sit amet <br>
Bottom Line 1: Lorum ipsum dolor sit amet <br>
Bottom Line 2: Lorum ipsum dolor sit amet <br>
Bottom Line 3: Lorum ipsum dolor sit amet <br>
Bottom Line 4: Lorum ipsum dolor sit amet <br>
Bottom Line 5: Lorum ipsum dolor sit amet <br>
Bottom Line 6: Lorum ipsum dolor sit amet <br>
Bottom Line 7: Lorum ipsum dolor sit amet <br>
Bottom Line 8: Lorum ipsum dolor sit amet <br>
Bottom Line 9: Lorum ipsum dolor sit amet <br>
Bottom Line 10: Lorum ipsum dolor sit amet <br>
</div>
<div id="footer">
Footer goes here...
</div>
</div>
</body>
</html>
The HTML & CSS all validate, but to get it working in IE6, you MUST have the comment above the DOCTYPE - which unfortunately puts IE6 into quirks mode (ah well - you can't win them all!).
If you want to change the height of your header, that's no problem, as long as the top padding on the body matches. You can even put it in EMs if you need it to scale.
The same goes for tihe width of the left nav, and the padding-left on the content.
You can do what you like inside the "content" div (multi columns, etc). If you want the footer to start level with the left of the content instead of the left of the page, move it from the "bodySection" div to the "content" div.
Hope this helps,
Dan
Coedit Limited - Delivering standards compliant, accessible web solutions
[tt]Dan's Page [blue]@[/blue] Code Couch
[/tt]