Tengo la siguiente estructura:
<body>
<div id="main-wrapper">
<header>
</header>
<nav>
</nav>
<article>
</article>
<footer>
</footer>
</div>
</body>
Carga contenido dinámicamente en el <article>
uso de javascript. Debido a esto, la altura del <article>
bloque puede cambiar.
Quiero que el <footer>
bloque esté en la parte inferior de la página cuando haya mucho contenido, o en la parte inferior de la ventana del navegador cuando solo existan unas pocas líneas de contenido.
De momento puedo hacer una u otra ... pero no ambas.
Entonces, ¿alguien sabe cómo puedo hacer esto? Consiga <footer>
que se pegue en la parte inferior de la página / contenido o en la parte inferior de la pantalla, dependiendo de cuál sea la más baja.
Respuestas:
El pie de página pegajoso de Ryan Fait es muy agradable, sin embargo, encuentro que falta su estructura básica *.
Versión Flexbox
Si tiene la suerte de poder usar flexbox sin necesidad de admitir navegadores antiguos, los pies de página adhesivos se vuelven trivialmente fáciles y admiten un pie de página de tamaño dinámico.
El truco para hacer que los pies de página se peguen al fondo con flexbox es hacer que otros elementos en el mismo contenedor se flexionen verticalmente. Todo lo que se necesita es un elemento contenedor de altura completa con
CSS:display: flex
al menos un hermano con unflex
valor mayor que0
:Mostrar fragmento de código
Si no puede usar flexbox, mi estructura base de elección es:
Que no está tan lejos de:
El truco para hacer que el pie de página se adhiera es tener el pie de página anclado al relleno inferior de su elemento contenedor. Esto requiere que la altura del pie de página sea estática, pero he descubierto que los pies de página suelen tener una altura estática.
HTML: CSS:Mostrar fragmento de código
Con el pie de página anclado a
CSS:#main-wrapper
, ahora debe#main-wrapper
tener al menos la altura de la página, a menos que sus hijos sean más largos. Esto se hace haciendo que#main-wrapper
tenga unamin-height
de100%
. También debe recordar que sus padres,html
ybody
debe ser tan alto como la página.Mostrar fragmento de código
Por supuesto, debería cuestionar mi juicio, ya que este código está obligando a que el pie de página se caiga de la parte inferior de la página, incluso cuando no hay contenido. El último truco es cambiar el modelo de caja que utiliza el
CSS:#main-wrapper
modo que elmin-height
del100%
incluye el100px
relleno.Mostrar fragmento de código
Y ahí lo tienes, un pie de página adhesivo con tu estructura HTML original. Solo asegúrese de que
footer
'sheight
sea igual a#main-wrapper
' spadding-bottom
, y debería estar configurado.* La razón por la que encuentro fallas en la estructura de Fait es porque establece los elementos
.footer
y.header
en diferentes niveles jerárquicos mientras agrega un.push
elemento innecesario .fuente
#main-wrapper *:first-child { margin-top: 0; }
, de lo contrario, la página sería demasiado larga en el margen superior del primer niño (lo que provocaría una barra de desplazamiento innecesaria en páginas cortas).El pie de página pegajoso de Ryan Fait es una solución simple que he usado varias veces en el pasado.
HTML básico :
CSS :
Traducir esto para que sea similar a lo que ya tiene resultados con algo como esto:
HTML :
CSS:
Simplemente no olvide actualizar el negativo en el margen del contenedor para que coincida con la altura de su pie de página y presione div. ¡Buena suerte!
fuente
Estaba buscando resolver este problema sin agregar ningún marcado adicional, así que terminé usando la siguiente solución:
Debe conocer las alturas de encabezado, navegación y pie de página para poder establecer la altura mínima del artículo. Por esto, si el artículo tiene solo unas pocas líneas de contenido, el pie de página se pegará en la parte inferior de la ventana del navegador, de lo contrario, irá debajo de todo el contenido.
Puede encontrar esta y otras soluciones publicadas arriba aquí: https://css-tricks.com/couple-takes-sticky-footer/
fuente