I figured it out, and my solution actually doesn't require a wrapper either, which is really nice. See here:
http://jsfiddle.net/RhFz6/4
What made my situation difficult was the fact that I needed three columns in the main body area, in addition to a header and footer. Furthermore, the layout was fluid-width, so I couldn't just use pseudo-columns. Of course, I didn't want to use a table either, because, well, I'd feel guilty. :P
Instead of treating the entire layout like a table, which was the reason I need a column span, I simply made the center area a table. The header and footer were simply displayed as block elements. I then set the height of html
and body
to 100%, and then made the center content area have a height of 100%. Unfortunately, this pushed the minimum-size layout past the window area, as it was a 100% height plus the header and footer.
To get around that, I just added some negative margins, to the pseudo-table, some positive padding to the cells (so you can still see the content after the header and footer overlap the table), and some fancy z-index work (because the header was beneath the table, not above it)
And, well, ta-da! Works in all modern browsers, but not tested in older ones. Thanks for your help!