I have a page with a variable-height header, content area, and footer. I want the content area to always fill the viewport, and grow vertically to fit content as necessary. I’ve found lots of examples of doing this with fixed-height headers, but none where the height is unknown.
Any solution needs to work in IE 6, 7 and 8, Firefox 3.x and Safari 4. Can this be done with pure CSS? Do I have to give in and resort to table-based layout?
EDIT:
An additional requirement is that I can place elements inside the content area and get them to expand to the full height of the content area (be it viewport height – header height – footer height or larger than that). Some of the content we want to display has “header” and “footer” sections of their own, so what I’m really looking for is a nestable solution.
Ok so the min-height CSS property doesn’t work 🙂
I played around with an actual HTML file now and I believe I found a way.
We use the
display: tableproperty to make sure each<div>sits nicely under and over the other ones.NOTE: You have to set a height property for each of the elements on the page. It doesn’t have to be as large as 10% that I chose, but at least something. Once the content is inserted into the element that is larger than the height value it should expand.
I’ve created two seperate HTML pages for you to examine to see if this suits you:
Hopefully this is what you’re looking for.
Thanks