aip solutions developer’s blog

25/02/2009

Footer stick on bottom with css

Filed under: CSS, HTML & XHTML — mili @ 11:47

A few weeks ago I found in Internet two beautiful posts to footer stick – lucky accident considering the huge information in the web. And lucky me, if you can imagine how long I’ve been trying to find out how to avoid using tables for layout. Even if it is only to stick the footer on bottom of the page.

Stop using tables!

Except for table-data of course ;-)

In the web you can find several ways to stick the footer without table (with height 100%). Some of them are based on JavaScript and often they are quite complicate. Others used long and messy hacks or a lot of extra HTML markup and the solution is confusing.

Now I want to say ‘Thank you for the really simple and working methods!’ to Bobby van der Sluis and to Ryan Fait.

At first I thought that these methods work only in XHTML, but today I tested both solutions in different doctypes and they …

Work fine in (X)HTML and IE6, IE7, FF, Opera, Safari & Chrome

Here is the list of doctypes tested in Internet Explorer 6,  Internet Explorer 7, Mozilla Firefox 3.0.6, Opera, Safari for Mac and Google Chrome:

  • HTML 4.01 Transitional
  • HTML 4.01 Strict
  • HTML 4.01 Frameset
  • XHTML 1.0 Transitional
  • XHTML 1.0 Strict
  • XHTML 1.0 Frameset
  • XHTML 1.1

Resource 1: A List Apart

Bobby van der Sluis has described the problem with the footer since 2004. In his article Exploring Footers he represents the JavaScript solution because of IE5 bug.
Although, his simple CSS method works in IE and FF, so here is the code:

html, body { height:100%; }
#container { position:relative; min-height:100%; }
#footer    { position:absolute; bottom:0; }
<div id="container">
    <div id="content">...</div>
    <div id="footer">...</div>
</div>

Resource 2: Las Vegas Web Design

The second nice post on this topic is Make the Footer Stick to the Bottom of a Page by Ryan Fait. It is really short and understandable resource. Here  I have to mention that some times in Internet Explorer there is a little bug – it is possible to appear vertical scrollbar when you resize the browser’s window.
Here is the code:

* 	        { margin:0; }
html,body { height:100%; }
.wrapper  { min-height:100%; height:auto!important; height:100%; margin:0 auto -4em; }
.footer,
.push     { height: 4em; }
<div class="wrapper">
    <p>Your website content here.</p>
   <div class="push"></div>
</div>
<div class="footer">
    <p>Copyright (c) 2008</p>
</div>

Floating content problem

Maybe it will be a problem using floating elements in the main content (before footer). So you can check for more information the site www.cssstickyfooter.com and the post with many comments A CSS Sticky Footer that Works in 2009 (Chrome too) – both by Steve Hatcher.

In my next web project I’ll test that and post here.

Updates

2009-09-28: I’ve just added new post with my own solution for XHTML http://blog.aip-solutions.com/311/footer-stick-on-bottom-2/

4 Comments »

  1. wow … at the end … every confused server-side programmer like me will be able to make a footer … now I feel happy :)

    Comment by Peter Mihailov — 25/02/2009 @ 20:15

  2. really helpful information…

    Comment by martin — 26/02/2009 @ 08:47

  3. indeed very useful work-arround for IE6 CSS properties: min-width:100px; /*IE6 do not understand min width and ignores it*/; width:200px; /* OK for all browsers*/ width:auto!important; /* OK for modern browsers; IE6 ignores it*/
    At the end for IE6 the computed style is: width:200px; and for the rest: min-width:100px;should be true for all CSS properties.

    would be nice to know how these solutions will work on IE7, Safari on mac and Chrome

    Comment by Peter Assenov — 26/02/2009 @ 08:55

  4. @Peter Assenov: Thanks for the comment. I tested the two methods on IE7, Opera, Safari for Mac and Chrome – they seems to work fine. As I promised, I’ll test them in my next web project with real content and floating elements.

    Comment by mili — 27/02/2009 @ 16:20

RSS feed for comments on this post. TrackBack URL

Leave a comment

Anti-Spam Quiz:

Powered by WordPress