CSS para hacer que el pie de página HTML permanezca en la parte inferior de la página con una altura mínima, pero no se superponga a la página
Tengo la siguiente página (enlace muerto:http://www.workingstorage.com/Sample.htm
que tiene un pie de página que no puedo colocar en la parte inferior de la página.
Quiero que el pie de página
- quédese en la parte inferior de la ventana cuando la página es corta y la pantalla no está llena, y
- permanezca al final del documento y baje normalmente cuando haya más de una pantalla llena de contenido (en lugar de superponer el contenido).
El CSS se hereda y me confunde. Parece que no puedo cambiarlo correctamente para poner una altura mínima en el contenido o hacer que el pie de página vaya al final.
A continuación se muestran 4 métodos diferentes míos:
En cada ejemplo, los textos se pueden editar libremente para ilustrar cómo se presentaría el contenido en diferentes escenarios.
1) Caja flexible
Mostrar fragmento de código
2) Cuadrícula
Mostrar fragmento de código
Este método a continuación utiliza un "truco" al colocar un ::after
pseudoelemento en el body
y configurarlo para que tenga la altura exacta del pie de página, de modo que ocupe exactamente el mismo espacio que el pie de página, de modo que cuando el pie de página se absolute
coloque sobre él, Parecería que el pie de página realmente ocupa espacio y elimina los efectos negativos de su posición absoluta (por ejemplo, repasar el contenido del cuerpo).
3) position:absolute
(sin altura de pie de página dinámica )
Mostrar fragmento de código
4) Diseño de mesa
Mostrar fragmento de código
Un método sencillo es crear el cuerpo 100%
de tu página con un min-height
símbolo de 100%
también. Esto funciona bien si la altura del pie de página no cambia.
Dale al pie de página un margen superior negativo:
footer {
clear: both;
position: relative;
height: 200px;
margin-top: -200px;
}
Una solución flexible muy simple que no supone alturas fijas ni cambios de posición de elementos.
HTML
<div class="container">
<header></header>
<main></main>
<footer></footer>
</div>
CSS
.container {
display: flex;
flex-direction: column;
min-height: 100vh;
}
main {
flex: 1;
}
Mostrar fragmento de código