On nous demande souvent comment fait-on pour positionner nos footer en CSS pour que :
- Quand le contenu d’un site est plus petit que l’écran, le footer colle au bas de l’écran.
- Quand le contenu du site est plus grand que l’écran, le footer descend sans passer par dessus le contenu.
Cela va faire plus d’un an que nous utilisons la technique suivante.
Et nous n’en sommes pas déçus !
La technique fonctionne avec trois <div>.
- Un div que l’on nommera “page” qui contiendra tout le contenu du site (excepté le footer)
- Un div que l’on nommera “footer” qui contiendra les éléments du footer
- Un div que l’on nommera “spacer-footer” qui permet de revenir dans le flux si il y a des éléments flottants et de garder un espace de libre pour le footer dans le div “page”.
Le principe est de fixer la hauteur minimale du body et du div “page” à 100%.
Ensuite, on place le footer en dehors du div “page”. Cela aura pour effet que le footer se trouvera juste en dehors de l’écran (schéma 1).
On le remonte avec un margin négatif égal à sa hauteur pour qu’il remonte par dessus le div “page” (schéma 2).

Si on en reste là, le footer passera au dessus du contenu se trouvant dans le bas du div “page”.
Il faut donc placer un div (”spacer-footer”) dans le bas du div “page” qui à la même hauteur que le footer.
De cette manière, le footer se placera au dessus de ce div et non plus du contenu si le contenu dépasse la taille de l’écran.
Pour ceux qui comprennent mieux avec du code voici pour eux.
Code HTML
<html>
<head>
...
</heade>
<body>
<div id="page">
<div id="spacer-footer">
</div>
</div>
<div id="footer">
</footer>
</body>
</html>
Code CSS
/*** HTML ***/
html, body {
height: 100%;
}
/*** PAGES ***/
#page {
min-height: 100%;
}
/*** FOOTER **/
#spacer-footer {
height: 30px;
clear: both;
}
#footer {
height: 30px;
margin-top: -30px;
}
Si vous faites encore attention à IE6, vous devez spécifier dans votre feuille de style IE6 ce qui suit.
En effet, IE6 n’interprète pas les “min-height”.
#page {
height: 100%;
}
Et pour en avoir le cœur net vous pouvez tester sur nos sites suivants :