Tengo un diseño simple de 2 columnas con un pie de página que borra el div derecho e izquierdo en mi marcado. Mi problema es que no puedo hacer que el pie de página permanezca en la parte inferior de la página en todos los navegadores. Funciona si el contenido empuja el pie de página, pero ese no es siempre el caso.
css
html
footer
sticky-footer
Bill el lagarto
fuente
fuente
Respuestas:
Para obtener un pie de página adhesivo:
Tener un
<div>
conclass="wrapper"
su contenido.Justo antes del cierre
</div>
delwrapper
lugar el<div class="push"></div>
.Justo después del cierre
</div>
delwrapper
lugar, el<div class="footer"></div>
.fuente
¡Usa unidades CSS vh!
Probablemente, la forma más obvia y no hacky de hacer un pie de página pegajoso sería utilizar las nuevas unidades de ventana de visualización CSS .
Tomemos por ejemplo el siguiente marcado simple:
Si el encabezado tiene 80px de alto y el pie de página tiene 40px de alto, entonces podemos hacer nuestro pie de página adhesivo con una sola regla en el contenido div:
Lo que significa: deje que la altura de la división de contenido sea al menos el 100% de la altura de la vista menos las alturas combinadas del encabezado y pie de página.
Eso es.
Mostrar fragmento de código
... y así es como funciona el mismo código con mucho contenido en el div de contenido:
Mostrar fragmento de código
NÓTESE BIEN:
1) Se debe conocer la altura del encabezado y pie de página
2) Las versiones anteriores de IE (IE8-) y Android (4.4-) no son compatibles con las unidades de ventana gráfica. ( caniuse )
3) Érase una vez que webkit tenía un problema con las unidades de ventana gráfica dentro de una regla de cálculo. De hecho, esto se ha solucionado ( ver aquí ) para que no haya ningún problema allí. Sin embargo, si está buscando evitar el uso de calc por alguna razón, puede evitarlo usando márgenes negativos y relleno con tamaño de caja:
Al igual que:
Mostrar fragmento de código
fuente
Pie de página adhesivo con
display: flex
Solución inspirada en el pie de página adhesivo de Philip Walton .
Explicación
Esta solución es válida solo para :
Se basa en la
flex
pantalla , aprovechando laflex-grow
propiedad, que permite que un elemento crezca en altura o anchura (cuandoflow-direction
se establece en cualquieracolumn
orow
respectivamente), para ocupar el espacio adicional en el contenedor.Vamos a aprovechar también la
vh
unidad, donde1vh
se define como :Por lo tanto, su altura
100vh
es una forma concisa de decirle a un elemento que abarque la altura de la ventana gráfica completa.Así es como estructuraría su página web:
Para que el pie de página se pegue en la parte inferior de la página, desea que el espacio entre el cuerpo y el pie de página crezca tanto como sea necesario para empujar el pie de página en la parte inferior de la página.
Por lo tanto, nuestro diseño se convierte en:
Implementación
Puedes jugar con él en el JSFiddle .
Caprichos del safari
Tenga en cuenta que Safari tiene una implementación defectuosa de la
flex-shrink
propiedad , que permite que los elementos se reduzcan más de la altura mínima que se requeriría para mostrar el contenido. Para solucionar este problema, deberá establecer laflex-shrink
propiedad explícitamente en 0 en.content
yfooter
en el ejemplo anterior:fuente
.Site-content
elemento de solución de Walton juega el mismo papel quespacer
. Simplemente se llama de manera diferente..Site-content
tiene un análogo.content
en este marcado ... pero no importa, pregunté por el caso gcedo tiene una idea específica al respecto, no hay necesidad de adivinarPuede usar el
position: absolute
siguiente para colocar el pie de página en la parte inferior de la página, pero luego asegúrese de que sus 2 columnas tengan el apropiadomargin-bottom
para que el pie de página nunca las ocluya.fuente
0px
s en todas las hojas de estilo que he visto deberían ser justas0
.Aquí hay una solución con jQuery que funciona como un encanto. Comprueba si la altura de la ventana es mayor que la altura del cuerpo. Si es así, cambia el margen superior del pie de página para compensar. Probado en Firefox, Chrome, Safari y Opera.
Si su pie de página ya tiene un margen superior (de 50 píxeles, por ejemplo), deberá cambiar la última parte para:
fuente
Establezca el CSS para
#footer
:A continuación, deberá agregar una
padding
omargin
en la parte inferior de su#sidebar
y#content
para que coincida con la altura de#footer
o cuando se superponen, el#footer
cubrirá.Además, si no recuerdo mal, IE6 tiene un problema con el
bottom: 0
CSS. Puede que tenga que usar una solución JS para IE6 (si le importa IE6).fuente
Una solución similar a @gcedo pero sin la necesidad de agregar un contenido intermedio para empujar el pie de página hacia abajo. Simplemente podemos agregar
margin-top:auto
al pie de página y será empujado al final de la página, independientemente de su altura o la altura del contenido anterior.fuente
.content
flex: 1 0 auto;
para que sea cultivable y no shinkable, peromargin-top: auto;
es un buen truco que implica un estilo de pie de página, no "no relacionado", lo.content
cual es bueno. En realidad, me pregunto por qué se necesita flexibilidad en este enfoque ...display:flex
no funcionará, tendrá un flujo de elementos de bloque normalmargin:0 auto
elemento de bloque central) PERO no tenemos ninguna dirección de columna, por lo que no hay margen auto con arriba / abajo. Flexbox tiene ambas direcciones de fila / columna;). Esta es la ligera diferencia, pero el margen también se usa dentro de flexbox para alinear el elemento, por lo que incluso dentro de una dirección de fila puede usar el margen superior / inferior automático para alinear verticalmente. Puede leer más aquí: w3.org/TR/css- FlexBox-1 / # auto-márgenesindex.html:
main.css:
Fuente: https://www.freecodecamp.org/news/how-to-keep-your-footer-where-it-belongs-59c6aa05c59c/
fuente
A veces tuve problemas con esto y siempre encontré que la solución con todos esos div dentro de cada uno era una solución desordenada. Simplemente lo jugué un poco, y personalmente descubrí que esto funciona y ciertamente es una de las formas más simples:
Lo que me gusta de esto es que no es necesario aplicar HTML adicional. Simplemente puede agregar este CSS y luego escribir su HTML como siempre
fuente
Dado que la solución Grid aún no se ha presentado, aquí está, con solo dos declaraciones para el elemento padre , si damos por sentado el
height: 100%
ymargin: 0
:align-content: space-between
fuente
CSS:
HTML:
Esto debería ser útil si está buscando un pie de página sensible alineado en la parte inferior de la página, que siempre mantiene un margen superior del 80% de la altura de la ventana gráfica.
fuente
Use el posicionamiento absoluto y el índice z para crear un div de pie de página fijo en cualquier resolución utilizando los siguientes pasos:
position: absolute; bottom: 0;
y la altura deseadadiv
que envuelva el contenido del cuerpo conposition: relative; min-height: 100%;
div
que sea igual a la altura más el relleno del pie de páginaz-index
pie de página más grande que el contenedordiv
si el pie de página está recortadoAquí hay un ejemplo:
fuente
Para esta pregunta, muchas de las respuestas que he visto son torpes, difíciles de implementar e ineficientes, así que pensé en intentarlo y encontrar mi propia solución, que es solo un poco de CSS y HTML
esto funciona estableciendo la altura del pie de página y luego usando css calc para calcular la altura mínima que puede tener la página con el pie de página todavía en la parte inferior, espero que esto ayude a algunas personas :)
fuente
Una solución sería establecer la altura mínima para las cajas. Desafortunadamente, parece que IE no lo admite bien (sorpresa).
fuente
Ninguna de estas soluciones css puras funciona correctamente con el cambio de tamaño dinámico del contenido (al menos en Firefox y Safari), por ejemplo, si tiene un fondo establecido en el contenedor div, la página y luego cambia el tamaño (agregando algunas filas) a la tabla dentro del div, el la tabla puede sobresalir de la parte inferior del área con estilo, es decir, puede tener la mitad de la tabla en blanco sobre el tema negro y la mitad de la tabla completa en blanco porque tanto el color de fuente como el color de fondo son blancos. Básicamente no se puede arreglar con las páginas de Themeroller.
El diseño de varias columnas de div anidado es un truco feo y el div de cuerpo / contenedor de altura mínima del 100% para el pie de página pegado es un truco más feo.
La única solución sin script que funciona en todos los navegadores que he probado: una tabla mucho más simple / corta con thead (para encabezado) / tfoot (para pie de página) / tbody (td para cualquier número de columnas) y 100% de altura. Pero esto ha percibido desventajas semánticas y de SEO (tfoot debe aparecer antes que tbody. Sin embargo, los roles ARIA pueden ayudar a los motores de búsqueda decentes).
fuente
Varias personas han puesto la respuesta a este simple problema aquí, pero tengo una cosa que agregar, considerando lo frustrado que estaba hasta que descubrí lo que estaba haciendo mal.
Como se mencionó, la forma más sencilla de hacerlo es así ...
Sin embargo, la propiedad no mencionada en las publicaciones, presumiblemente porque generalmente es predeterminada, es la posición: estática en la etiqueta del cuerpo. Posición relativa no funcionará!
Mi tema de WordPress había anulado la pantalla predeterminada del cuerpo y me confundió durante un tiempo desagradablemente largo.
fuente
Un viejo hilo que conozco, pero si está buscando una solución receptiva, esta adición de jQuery ayudará a:
La guía completa se puede encontrar aquí: https://pixeldesigns.co.uk/blog/responsive-jquery-sticky-footer/
fuente
He creado una biblioteca muy simple https://github.com/ravinderpayal/FooterJS
Es muy simple de usar. Después de incluir la biblioteca, simplemente llame a esta línea de código.
Los pies de página se pueden cambiar dinámicamente al recuperar la función anterior con diferentes parámetros / id.
Nota: - No tiene que alterar ni agregar ningún CSS. La biblioteca es dinámica, lo que implica que incluso si se cambia el tamaño de la pantalla después de cargar la página, restablecerá la posición del pie de página. He creado esta biblioteca, porque CSS resuelve el problema por un tiempo, pero cuando el tamaño de la pantalla cambia significativamente, desde el escritorio a la tableta o viceversa, se superponen al contenido o ya no permanecen fijos.
Otra solución son las Consultas de medios CSS, pero debe escribir manualmente diferentes estilos CSS para diferentes tamaños de pantallas, mientras que esta biblioteca hace su trabajo automáticamente y es compatible con todos los navegadores básicos compatibles con JavaScript.
Editar solución CSS:
Ahora, si la altura de la pantalla es mayor que la longitud de su contenido, haremos que el pie de página se fije en la parte inferior y, de lo contrario, aparecerá automáticamente al final de la pantalla, ya que debe desplazarse para ver esto.
Y, parece una mejor solución que JavaScript / biblioteca uno.
fuente
No tenía suerte con las soluciones sugeridas en esta página antes, pero finalmente, este pequeño truco funcionó. Lo incluiré como otra posible solución.
fuente
Solución Flexbox
Se prefiere el diseño flexible para las alturas naturales de encabezado y pie de página. Esta solución flexible se prueba en navegadores modernos y realmente funciona :) en IE11.
Ver JS Fiddle .
HTML
CSS
fuente
Para mí, la mejor manera de mostrarlo (el pie de página) es pegarse al final pero no cubrir el contenido todo el tiempo:
fuente
jQuery CROSS BROWSER PLUGIN PERSONALIZADO - $ .footerBottom ()
O use jQuery como lo hago yo, y configure la altura de su pie de página en
auto
o parafix
lo que quiera, funcionará de todos modos. este complemento utiliza selectores jQuery, por lo que para que funcione, deberá incluir la biblioteca jQuery en su archivo.Así es como ejecuta el complemento. ¡Importe jQuery, copie el código de este complemento jQuery personalizado e impórtelo después de importar jQuery! Es muy simple y básico, pero importante.
Cuando lo haces, todo lo que tienes que hacer es ejecutar este código:
no es necesario colocarlo dentro del evento de documento listo. Funcionará bien como está. Volverá a calcular la posición de su pie de página cuando se cargue la página y cuando la ventana cambie de tamaño.
Aquí está el código del complemento que no tiene que entender. Solo sé cómo implementarlo. Hace el trabajo por ti. Sin embargo, si desea saber cómo funciona, solo mire el código. Te dejé comentarios.
fuente
Las soluciones flexibles funcionaron para mí en lo que respecta a hacer que el pie de página sea adhesivo, pero desafortunadamente cambiar el cuerpo para usar el diseño flexible hizo que algunos de nuestros diseños de página cambiaran, y no para mejor. Lo que finalmente funcionó para mí fue:
Obtuve esto de la respuesta de ctf0 en https://css-tricks.com/couple-takes-sticky-footer/
fuente
fuente
Si no quieres usar la posición fija y seguirte de forma molesta en el móvil, esto parece estar funcionando para mí hasta ahora.
Simplemente configure el html en
min-height: 100%;
yposition: relative;
, luego,position: absolute; bottom: 0; left: 0;
en el pie de página. Luego me aseguré de que el pie de página fuera el último elemento del cuerpo.Avíseme si esto no funciona para nadie más y por qué. Sé que estos trucos de estilo tedioso pueden comportarse de manera extraña entre varias circunstancias en las que no había pensado.
fuente
Intente colocar un contenedor div (con overflow: auto) alrededor del contenido y la barra lateral.
Si eso no funciona, ¿tiene capturas de pantalla o enlaces de ejemplo donde el pie de página no se muestra correctamente?
fuente