I am trying to implement a CSS sticky footer.
The issue is there is a content DIV that is extending beyond its container causing scroll bars that are not desirable and the background-image hung off the page div does not extend the full height of the document.
Here is my HTML:
<div id="page">
<div id="header">
<dl>
<dt>Header links -</dt>
<dd><a href="#">link 1</a></dd>
<dd><a href="#">link 2</a></dd>
<dd><a href="#">link 3</a></dd>
</dl>
</div>
<div id="content">
<p><a id="modal" href="popup.html" target="_blank">link to popup</a></p>
</div>
<div id="footer">
<dl>
<dt>Footer links -</dt>
<dd><a href="#">link 1</a></dd>
<dd><a href="#">link 2</a></dd>
<dd><a href="#">link 3</a></dd>
</dl>
</div>
</div>
And here is the CSS:
/*--------------------------------------------------------------- global */
html,
body {
color:#969696;
font-size:100%;
height:100%;
}
body {
font:normal 200 70% Arial, Helvetica, Verdana, sans-serif;
}
a,
a:link,
a:visited,
a:hover,
a:active {
border-bottom:1px dashed #ff8400;
color:#ff8400;
text-decoration:none;}
a:hover {
border-bottom-style:solid;}
/*--------------------------------------------------------------- layout */
#page {
background:url("../images/bgMain.jpg") repeat-y center top;
height:100%;
margin:0 auto;
position:relative;
width:1024px;
}
dl,
dt,
dd {
float:left;
}
dd {
margin:0 .2em 0;
}
dd:after {
color:#969696;
content:"|";
padding:0 0 0 .3em;
}
dd:last-child:after {
content:"";
}
/*----------------- header */
#header {
margin:0 auto;
width:726px;
}
#header dl {
float:right;
line-height:60px;
}
/*----------------- content body */
#content {
background:#fff;
border-top-left-radius:5px;
border-top-right-radius:5px;
-moz-border-radius-topleft:5px;
-moz-border-radius-topright:5px;
-webkit-border-top-left-radius:5px;
-webkit-border-top-right-radius:5px;
box-shadow:0 0 12px 0 rgba(0, 0, 0, .1);
-moz-box-shadow:0 0 12px 0 rgba(0, 0, 0, .1);
-webkit-box-shadow:0 0 12px 0 rgba(0, 0, 0, .1);
clear:both;
height:100%;
margin:0 auto;
min-height:100%;
padding:16px 13px 22px;
position:relative;
width:700px;
}
/*----------------- footer */
#footer {
clear:both;
margin:-22px auto;
position:relative;
width:726px;
}
#footer dl {
display:inline;
margin:0 0 0 13px;
}
#footer a,
#footer a:link,
#footer a:visited,
#footer a:hover,
#footer a:active {
border-bottom-color:#969696;
color:#969696;
}
The fantastic CSS Tricks website has, in their Snippets area a snippet for a Sticky Footer
or using jQuery
latest link with demo
I wrote a very clean CSS footer a couple days ago, you could find it useful.
http://mystrd.at/modern-clean-css-sticky-footer
There is a very helpful CSS trick that will always stick your footer to the bottom, even if the content height is lower than the height of the viewport.
See HTML code below:
See CSS code below:
In your case I would wrap the nav and article in a "content" div. And give it a min-height value of calc(100vh - 100px).
Here is the article source: Sticky CSS Footer
You will find on this github repository (Bredele css sticky footer) two versions of sticky footers : one with a header and an other one without.
Both these versions use display:table (works with IE8) with no extra markups, no clearfix and a flexible content height. Moreover, the header height doesn't depend on the content padding or a relative viewport!
Hope it'll be helpful!
Olivier
Use the following style for the footer:
This will put it at the bottom of the screen at all times, if you want it at the bottom of
<div id="page">
addModern Clean CSS “Sticky Footer” from James Dean
HTML
CSS
Demo here