I have replicated Ryan Fait's sticky footer. Here is the CSS and HTML for clarity:
<body>
    <div class="wrapper">
    // Content
        <div class="push"></div>
    </div>
    <div class="footer">
        <p>Lorem ipsum</p>
    </div>
</body>
CSS:
html, body {
    height: 100%;
}
.wrapper {
    min-height: 100%;
    height: auto !important; /* This line and the next line are not necessary unless you need IE6 support */
    height: 100%;
    margin: 0 auto -155px; /* the bottom margin is the negative value of the footer's height */
}
.footer, .push {
    height: 155px; /* .push must be the same height as .footer */
}
As you can see, it works nicely. What I don't understand though is how the height (note: height, not min-height) is explicity set for the body and yet it still expands beyond this value to accomodate content?
I hope my question is clear...
EDIT: The second comment on this answer seems to suggest that this shouldn't happen.
 
    