If you need a number of equal columns in the footer then you would basically create a nested table structure in the footer but with css. e.g. create an inner display:table element and then a number of table-cell elements - you can omit the css table-row equivalent as the browser will automatically construct those unless you needed extra rows as obviously all cells get put into the one automatic row.
If you don’t need them all to equalise then of course you can just float them in the footer with no problem. Remember though that if you increase the height of the footer or header the dividing line co-ordinates will need to be modified. I tried to find an automatic solution but ran into the footer issue when I used two cells in the middle (but have found a solution for that in the example at the end of this post) .
Display:table properties only work in IE8+ so if you want to support IE7 then you would need to use Conditional comments (or a hack) to give IE7 a not so good floated version.
The CSS display table properties are useful for equal columns or where you don’t want columns to wrap (unlike floats) but do not have the colspan equivalent so the number of cells in each table structure must match to behave correctly. Most of the time I float elements but if I need equal columns then I will use display:table-cell and then float for ie7.
e.g.
.cell{
display:table-cell;
*float:left;/* invalid hack for ie7 and under - the asterisk is invalid as a property character but IE7 ignore it as if it wasn't there and read the rule anyway*/
}
Here’s a slightly more complicated example that allows for automatic height header and footers and uses the two equal cells I mentioned earlier. To overcome the short cell in the header and footer an inner element is dragged right with a negative margin to fill the space.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
<style type="text/css">
html, body {
height:100%;
margin:0;
padding:0;
}
/* diagonal background gradient added for testing*/
h1 {
margin:0;
text-align:center;
padding:10px 0;
}
p {
padding:0 5px;
margin:0 0 1em
}
.tc {
display:table-cell;
width:100%;
height:100%;
vertical-align:top;
}
.tr {
display:table-row;
width:100%;
}
.top .tc, .bottom .tc { height:1px }/* make sticky footer work */
body {
font-family:Geneva, Arial, Helvetica, sans-serif;
-moz-background-size: 40px 40px;
-webkit-background-size: 40px 40px;
background-size: 40px 40px;
background-color: #fff;
background-image: -moz-linear-gradient(right top, transparent, transparent 15%, rgba(255, 220, 220, 0.5) 15%, rgba(255, 220, 220, 0.5) 50%, transparent 50%, transparent 65%, rgba(255, 220, 220, 0.5) 65%, rgba(255, 220, 220, 0.5));
background-image: -webkit-gradient(linear, 100% 0%, 0% 100%, color-stop(0.15, transparent), color-stop(0.15, rgba(255, 220, 220, 0.5)), color-stop(0.50, rgba(255, 220, 220, 0.5)), color-stop(0.50, transparent), color-stop(0.65, transparent), color-stop(0.65, rgba(255, 220, 220, 0.5)));
color:red;
}
#outer {
display:table;
width:960px;
margin:auto;
height:100%;
table-layout:fixed;
background:#000;
background:rgba(0,0,0, 0.4);
position:relative;
border-spacing:10px;
}
.main {
width:600px;
padding:20px 0;
}
.sidebar {
width:359px;
padding:20px 0;
border-left:1px dotted red;
}
#footer {
width:100%;
}
#footer .stretch { border-top:1px solid red; }
#header .stretch { border-bottom:1px solid red; }
.stretch {
margin:0 -339px 0 0;
position:relative
}/* drag into right column*/
#header, #footer { width:600px }
</style>
<!--[if lte IE 8]>
<style type="text/css">
.tc{height:auto}
</style>
<![endif]-->
<!--[if lt IE 8]>
<style type="text/css">
.tc{float:left}
.stretch{margin-right:0;border:none}
#header,#footer{height:auto;clear:both}
.main{border-right:1px solid red}
.sidebar{float:left;margin-left:-1px;border-left:1px solid red}
#footer { border-top:1px solid red;width:100% }
#header { border-bottom:1px solid red;width:100% }
</style>
<![endif]-->
</head>
<body>
<div id="outer">
<div class="tr top">
<div id="header" class="tc">
<div class="stretch">
<h1>Header</h1>
<p>lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet </p>
</div>
</div>
</div>
<div class="tr">
<div class="main tc">
<p>lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet </p>
<p>test</p>
</div>
<div class="sidebar tc">
<p>lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet </p>
<p>test</p>
<p>test</p>
</div>
</div>
<div class="tr bottom">
<div id="footer" class="tc">
<div class="stretch">
<p>lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet lorem ipsum dolor sit amet </p>
<p>Footer</p>
</div>
</div>
</div>
</div>
</body>
</html>
It seems to work well in IE8+ but will need stress testing as I’ve just knocked that idea up 
Live example here.
And with fluid width to test if sticky footer really working.