Вот что я использую для наклеивания нижнего колонтитула внизу. При использовании этого метода нижний колонтитул никогда не перекрывает содержимое, независимо от того, насколько маленьким становится окно. Если вы отредактируете его, убедитесь, что padding-bottom на div #body больше, чем высота div #footer - это то, что предотвращает перекрытие. У меня нет страниц с абсолютно позиционированным контентом, поэтому я не знаю, как он себя ведет; для плавающего содержимого, естественно, после него должен быть очищающий блок, иначе #body div сжимается.
CSS:
html, body {margin:0;padding:0;height:100%;}
#container {min-height:100%;position:relative;}
#body {padding:10px;padding-bottom:2em;zoom:1;}
#footer {position:absolute;bottom:0;width:100%;height:1em;}
HTML:
<body>
<div id="container">
<div id="body">
(body contents)
</div><!-- #body -->
<div id="footer">
<p>(footer text)</p>
</div><!-- #footer -->
</div><!-- #container -->
</body>
А затем, чтобы исправить IE6, я добавляю условный комментарий:
<!--[if lt IE 7]>
<style type="text/css">
#container {height:100%;}
</style>
<![endif]-->
Также важно иметь объявление doctype, чтобы IE был в стандартном режиме, а не в режиме quirks.