Je veux juste ajouter que la plupart des autres réponses ont bien fonctionné pour moi ; cependant, il a fallu beaucoup de temps pour les faire fonctionner !
En effet, le réglage height: 100%
ne prend que la hauteur de la div parent !
Donc, si l'ensemble de votre html (à l'intérieur du corps) ressemble à ce qui suit :
<div id="holder">
<header>.....</header>
<div id="body">....</div>
<footer>....</footer>
</div>
Ensuite, les éléments suivants seront parfaits :
html,body{
height: 100%
}
#holder{
min-height: 100%;
position:relative;
}
#body{
padding-bottom: 100px; /* height of footer */
}
footer{
height: 100px;
width:100%;
position: absolute;
left: 0;
bottom: 0;
}
...car le "support" prendra sa hauteur directement du "corps".
Bravo à My Head Hurts, dont la réponse est celle que j'ai fini par faire fonctionner !
Cependant. Si votre code html est plus imbriqué (parce qu'il ne s'agit que d'un élément de la page complète, ou qu'il se trouve dans une certaine colonne, etc. chaque élément contenant a également height: 100%
défini sur le div. Sinon, l'information sur la hauteur sera perdue entre "body" et "holder".
Par exemple, dans l'exemple suivant, j'ai ajouté la classe "full height" à chaque div pour m'assurer que la hauteur est respectée jusqu'à nos éléments header/body/footer :
<div class="full-height">
<div class="container full-height">
<div id="holder">
<header>.....</header>
<div id="body">....</div>
<footer>....</footer>
</div>
</div>
</div>
Et n'oubliez pas de définir la hauteur sur la classe full-height dans le css :
#full-height{
height: 100%;
}
Cela a réglé mes problèmes !
2 votes
Essayez
position:fixed
bien que ce ne soit pas exactement la meilleure façon de le faire.1 votes
Position d'essai : relative sur le corps.
1 votes
Vous n'avez pas fermé votre ; après position : absolute. cela aurait parfaitement fonctionné autrement !