Tenía la siguiente página (deadlink:) http://www.workingstorage.com/Sample.htm
que tiene un pie de página que no puedo dejar en la parte inferior de la página.
Quiero el pie de página para
- pegarse a la parte inferior de la ventana cuando la página es corta y la pantalla no está llena, y
- manténgase al final del documento y baje normalmente cuando hay 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.
flexbox
.Respuestas:
Un método simple es hacer el cuerpo
100%
de su página, con unmin-height
de100%
también. Esto funciona bien si la altura de su pie de página no cambia.Dale al pie de página un margen superior negativo:
fuente
box-sizing: border-box;
al cuerpo [y al#container
].He desarrollado un método bastante fácil para pegar el pie de página en la parte inferior, pero como los métodos más comunes, deberá ajustarlo para que se ajuste a la altura de su pie de página.
VER DEMO
Método de Flexbox:
Este método a continuación utiliza un "truco" al colocar un
::after
pseudo-elemento en elbody
, y configurarlo para que tenga la altura exacta del pie de página, por lo que ocupará exactamente el mismo espacio que el pie de página, por lo que cuando el pie de página seabsolute
coloca sobre él, parecería que el pie de página realmente está ocupando espacio y elimina los efectos negativos de su posición absoluta (por ejemplo, revisar el contenido del cuerpo)position:absolute
Método: (no permite la altura dinámica del pie de página)Método de diseño de tabla:
fuente
display: table
display: table-row
display:table-cell
. Sin embargo, descubrí que necesitaba agregarbody {margin-top: 0; padding-top: 0; margin-bottom: 0; padding-bottom: 0;}
para evitar una barra de desplazamiento. Puede atender esto ajustando el,body:after height
pero estoy especificando el mío en rem no px, por lo que se vuelve problemático.flexbox
Un enfoque muy simple que funciona muy bien en varios navegadores es este:
http://matthewjamestaylor.com/blog/keeping-footers-at-the-bottom-of-the-page
fuente
He usado esto para pegar mi pie de página en la parte inferior y funcionó para mí:
HTML
Esa es la única modificación que tiene que hacer en el HTML, agregue eso
div
con la"allButFooter"
clase. Lo hice con todas las páginas, las que eran tan cortas, sabía que el pie de página no se pegaría al final, y también páginas lo suficientemente largas que ya sabía que tenía que desplazarme. Hice esto, por lo que pude ver que funciona bien en el caso de que el contenido de una página sea dinámico.CSS
La
"allButFooter"
clase tiene unmin-height
valor que depende de la altura de la ventana gráfica (100vh
significa el 100% de la altura de la ventana gráfica) y la altura del pie de página, que ya sabía que era40px
.Eso fue todo lo que hice y funcionó perfectamente para mí. No lo he probado en todos los navegadores, solo en Firefox, Chrome y Edge, y los resultados fueron los que quería. El pie de página se pega al final y no tiene que meterse con el índice z, la posición ni ninguna otra propiedad. La posición de cada elemento en mi documento era la posición predeterminada, no la cambié a absoluta o fija ni nada.
Trabajando con diseño receptivo
Aquí hay algo que me gustaría aclarar. Esta solución, con el mismo pie de página que tenía 40px de altura, no funcionó como esperaba cuando estaba trabajando en un diseño receptivo usando
Twitter-Bootstrap
. Tuve que modificar el valor que estaba restando en la función:Esto probablemente se deba a que
Twitter-Bootstrap
viene con sus propios márgenes y rellenos, por eso tuve que ajustar ese valor.¡Espero que esto sea de alguna utilidad para ustedes! Al menos, es una solución simple para probar, y no implica hacer grandes cambios en todo el documento.
fuente
display: none
Gracias. Es agradable y simple también.position: fixed; bottom: 0
y éste. Esta solución es la mejor porque el pie de página no se pega al final, sino que se queda al final de la página desplazable..footer {max-height: calc(100vh+40px); position: absolute}
. Como también funciona, solo debes saber el tamaño de tu cuerpo.Desde IE7 en adelante, simplemente puede usar
Ver caniuse para soporte.
fuente
Una solución simple que uso, funciona desde IE8 +
Proporcione la altura mínima: 100% en html, de modo que si el contenido es menor, la página aún ocupa la altura completa del puerto de visualización y los pies de página en la parte inferior de la página. Cuando el contenido aumenta, el pie de página se desplaza hacia abajo con contenido y se mantiene pegado al fondo.
Demostración de trabajo de violín JS: http://jsfiddle.net/3L3h64qo/2/
Css
HTML
fuente
Sin embargo, otra solución realmente simple es esta:
jsFiddle
El truco es usar un
display:table
para todo el documento ydisplay:table-row
conheight:0
para el pie de página.Dado que el pie de página es el único elemento secundario del cuerpo que tiene una pantalla como
table-row
, se representa en la parte inferior de la página.fuente
height: 100%
realidad su 100% cuando la relación de la ventana gráfica es 1/1 (cuadrado). Cuando la ventana gráfica se ensancha (horizontal), la altura será superior al 100% y, si es más estrecha (vertical), inferior al 100%. Entonces la altura es proporcional al ancho de la ventana. Intenté resolverlo con otro contenedor, pero esto no funcionó. Alguien tiene una solución o al menos una pista?Una solución flexible muy simple que no asume alturas fijas ni cambia la posición de los elementos.
HTML
CSS
Soporte de navegador
Todos los principales navegadores, excepto IE11 y versiones inferiores.
Asegúrese de usar Autoprefixer para los prefijos apropiados.
Mostrar fragmento de código
fuente
Una cosa a tener en cuenta son los dispositivos móviles, ya que implementan la idea de la ventana gráfica de una manera 'inusual':
http://developer.apple.com/library/ios/#documentation/AppleApplications/Reference/SafariWebContent/UsingtheViewport/UsingtheViewport.html#//apple_ref/doc/uid/TP40006509-SW25
Como tal, usar
position: fixed;
(como he visto recomendado en otros lugares) generalmente no es el camino a seguir. Por supuesto, depende del comportamiento exacto que buscas.Lo que he usado, y ha funcionado bien en computadoras de escritorio y dispositivos móviles, es:
con
fuente
Hacer esto
También puede leer sobre flex, es compatible con todos los navegadores modernos
Actualización : leí sobre flex y lo probé. Funcionó para mi. Espero que haga lo mismo por ti. Así es como lo implementé. Aquí principal no es la ID, es el div
Aquí puede leer más sobre flex https://css-tricks.com/snippets/css/a-guide-to-flexbox/
Tenga en cuenta que no es compatible con versiones anteriores de IE.
fuente
flex-grow: 1
de algo por encima del pie de página mantendrá el pie de página en la parte inferior correctamente.Acabo de responder una pregunta similar aquí:
Coloque el pie de página en la parte inferior de la página con un encabezado fijo
Soy bastante nuevo en desarrollo web, y sé que esto ya ha sido respondido, pero esta es la forma más fácil que encontré para resolverlo y creo que de alguna manera es diferente. Quería algo flexible porque el pie de página de mi aplicación web tiene una altura dinámica, terminé usando FlexBox y un espaciador.
Estoy asumiendo un
column
comportamiento para nuestra aplicación, en el caso de que necesite agregar un encabezado, héroe o cualquier contenido alineado verticalmente.Puedes jugar con él aquí https://codepen.io/anon/pen/xmGZQL
fuente
Esto se conoce como pie de página adhesivo. Una búsqueda en Google tiene muchos resultados. Un pie de página adhesivo CSS es el que he usado con éxito. Pero hay más.
Fuente de este código
fuente
Mi método jquery, este coloca el pie de página en la parte inferior de la página si el contenido de la página es menor que la altura de la ventana, o simplemente coloca el pie de página después del contenido de lo contrario:
Además, mantener el código en su propio gabinete antes de otro código reducirá el tiempo que lleva reposicionar el pie de página.
fuente
Yo mismo he estado investigando este problema. He visto bastantes soluciones y cada una de ellas tenía problemas, que a menudo involucraban algunos números mágicos.
Entonces, utilizando las mejores prácticas de varias fuentes, se me ocurrió esta solución:
http://jsfiddle.net/vfSM3/248/
Lo que quería lograr específicamente aquí era obtener el contenido principal para desplazarse entre el pie de página y el encabezado dentro del área verde.
Aquí hay un simple CSS:
fuente
Así es como resolví el mismo problema
fuente
Esto funciona bien
fuente
Solo personaliza la sección de pie de página
fuente
Aquí están mis dos centavos. En comparación con otras soluciones, no es necesario agregar contenedores adicionales. Por lo tanto, esta solución es un poco más elegante. Debajo del ejemplo de código, explicaré por qué esto funciona.
Entonces, lo primero que hacemos es hacer que el contenedor más grande (html) sea 100%. La página html es tan grande como la página misma. Luego establecemos la altura del cuerpo, puede ser más grande que el 100% de la etiqueta html, pero al menos debería ser tan grande, por lo tanto, utilizamos una altura mínima del 100%.
También hacemos que el cuerpo sea relativo. Relativo significa que puede mover el elemento de bloque alrededor relativo desde su posición original. Sin embargo, no usamos eso aquí. Porque el pariente tiene un segundo uso. Cualquier elemento absoluto es absoluto para la raíz (html) o para el primer padre / abuelo relativo. Eso es lo que queremos, queremos que el pie de página sea absoluto, en relación con el cuerpo, es decir, la parte inferior.
El último paso es establecer el pie de página en absoluto y bottom: 0, que lo mueve al final del primer padre / abuelo que es relativo (cuerpo del curso).
Ahora todavía tenemos un problema que solucionar, cuando llenamos la página completa, el contenido pasa por debajo del pie de página. ¿Por qué? bueno, porque el pie de página ya no está dentro del "flujo html", porque es absoluto. Entonces, ¿cómo arreglamos esto? Agregaremos relleno de fondo al cuerpo. Esto asegura que el cuerpo sea más grande que su contenido.
Espero haberlo dejado muy claro.
fuente
Dynamic one liner usando jQuery
Todos los métodos CSS que he encontrado son demasiado rígidos. Además, establecer el pie de página en
fixed
no es una opción si eso no es parte del diseño.Probado en:
Asumiendo este diseño:
Use la siguiente función jQuery:
Lo que hace es establecer el
min-height
para#content
la altura de la ventana - la altura del pie de página lo que sea que sea en ese momento.Como utilizamos
min-height
, si la#content
altura excede la altura de la ventana , la función se degrada con gracia y no tiene ningún efecto, ya que no es necesaria.Véalo en acción:
Mismo fragmento en JsFiddle
Prima:
Podemos llevar esto más allá y hacer que esta función se adapte al cambio de tamaño de la altura del visor dinámico de esta manera:
fuente
Puedes hacerlo
fuente
Simplemente configure el html, el cuerpo y las otras filas excepto el pie de página al 100%. p.ej
el CSS se convierte
fuente
fuente
¿Qué hay de eso?
fuente
Lo he usado en muchos proyectos y nunca tuve ningún problema :)
para su referencia, el código está en fragmento
fuente