J'utilise la suivante : Mise en page CSS - 100 % de hauteur
Hauteur minimale
L'élément #container de cette page a une hauteur minimale de 100 %. Cela Ainsi, si le contenu nécessite une hauteur supérieure à celle de la fenêtre d'affichage, la hauteur du #contenu oblige le #container à s'allonger également. Les éventuelles colonnes du #contenu peuvent alors être visualisées avec un arrière-plan image d'arrière-plan sur #container ; les divs ne sont pas des cellules de tableau, et vous n'avez pas besoin (ou ne voulez pas) des éléments physiques pour créer de telles colonnes. les éléments physiques pour créer un tel effet visuel. Si vous n'êtes pas Si vous n'êtes pas encore convaincu, pensez à des lignes ondulées et des gradients lignes droites et à des schémas de couleurs simples.
Positionnement relatif
Parce que #container a une position relative, #footer restera toujours à sa base ; puisque la hauteur minimale mentionnée ci-dessus n'empêche pas le #container de se mettre à l'échelle, cela fonctionnera même si (ou plutôt surtout si) #content force #container à devenir plus long.
Padding-bottom
Comme il n'est plus dans le flux normal, le padding-bottom de #content fournit maintenant l'espace pour le #footer absolu. Ce padding est incluse par défaut dans la hauteur de défilement, de sorte que le pied de page ne ne chevauchera jamais le contenu ci-dessus.
Réduisez un peu la taille du texte ou redimensionnez la fenêtre de votre navigateur pour tester cette la mise en page.
html,body {
margin:0;
padding:0;
height:100%; /* needed for container min-height */
background:gray;
font-family:arial,sans-serif;
font-size:small;
color:#666;
}
h1 {
font:1.5em georgia,serif;
margin:0.5em 0;
}
h2 {
font:1.25em georgia,serif;
margin:0 0 0.5em;
}
h1, h2, a {
color:orange;
}
p {
line-height:1.5;
margin:0 0 1em;
}
div#container {
position:relative; /* needed for footer positioning*/
margin:0 auto; /* center, not in IE5 */
width:750px;
background:#f0f0f0;
height:auto !important; /* real browsers */
height:100%; /* IE6: treaded as min-height*/
min-height:100%; /* real browsers */
}
div#header {
padding:1em;
background:#ddd url("../csslayout.gif") 98% 10px no-repeat;
border-bottom:6px double gray;
}
div#header p {
font-style:italic;
font-size:1.1em;
margin:0;
}
div#content {
padding:1em 1em 5em; /* bottom padding for footer */
}
div#content p {
text-align:justify;
padding:0 1em;
}
div#footer {
position:absolute;
width:100%;
bottom:0; /* stick to bottom */
background:#ddd;
border-top:6px double gray;
}
div#footer p {
padding:1em;
margin:0;
}
Cela fonctionne bien pour moi.
32 votes
Vous pourriez envisager
min-height: 100vh;
. La hauteur est ainsi égale ou supérieure à la taille de l'écran,vh: vertical height
. Pour plus d'informations : w3schools.com/cssref/css_units.asp .2 votes
Juste une précision,
vh
signifieviewport height
et donc vous pouvez également utiliservw
pourviewport width
yvmin
pour la dimension la plus petite,viewport minimum
.1 votes
Cette solution donnera des résultats indésirables sur chrome pour Android (il faudrait vérifier sur d'autres navigateurs mobiles comme Safari) car 100vh ne sera pas la même chose que 100%. En effet, la hauteur 100% correspond à la hauteur de l'écran moins la barre d'adresse en haut de l'écran, alors que 100vh correspond à la hauteur de l'écran sans la barre d'adresse. L'utilisation de 100vh ne fonctionnera donc pas sur chrome pour Android. Votre pied de page se trouvera sous le pli d'une hauteur correspondant à la hauteur de la barre d'adresse du navigateur.
0 votes
Vous pouvez y parvenir avec Flexbox. Voir exemple .
1 votes
Aujourd'hui, "100vh" fonctionne comme un charme.