2010-04-30 9 views
12

superposición he fijado mi DIV pie de página en la parte inferior de la ventana de la siguiente manera:Prevención de pie de página fija de contenido

#Footer 
{ 
    position: fixed; 
    bottom: 0; 
} 

Esto funciona bien si no hay mucho contenido en la página. Sin embargo, si el contenido ocupa todo el alto de la página (es decir, la barra de desplazamiento vertical está visible), el pie de página se superpone al contenido, lo cual no es habitual.

¿Cómo hago para que el pie de página se adhiera a la parte inferior de la ventana gráfica, pero nunca se superpone al contenido?

Respuesta

1

intenta configurar el atributo posición estática a

position: static; 
2

El problema es que la posición fixed lo saca del flujo de documentos. Puede agregar margin-bottom al contenido del cuerpo igual a la altura de #Footer. Esto asegurará que siempre haya un espacio vacío detrás del pie de página igual a su altura, evitando que se solape con el contenido.

5

Una solución moderna de "pie de página adhesivo" usaría flexbox.

tl; dr:: Un recipiente (cuerpo) para display:flex y el niño (pie de página) que desea mover hacia abajo para margin-top:auto.

Primero, configuramos el cuerpo para "flexionar" sus elementos verticalmente, asegurándonos de que sea 100% alto.

Luego establecemos flex: 0 0 50px en el elemento del pie de página, lo que significa: "no crecer, no encoger y tener una altura de 50px". De hecho, podríamos omitir el atributo flex y simplemente ir con height:50px.

Podemos establecer display:flex en cosas como el <body> sí un tanto imprudentemente, porque los niños de un recipiente flex tienen un valor implícito de flex: 0 1 auto si se omite, que es (casi) equivalente a flex:none (que es la abreviatura de flex:0 0 auto)

Es el margin:auto que nos da lo que queremos. Aplicados dentro de un contenedor flexible, los márgenes automáticos adquieren un nuevo significado, en lugar de la habitual "obtener la misma cantidad de espacio libre", significan "absorben TODO el espacio libre disponible".

De la especificación (8.1. Aligning with auto margins):

Antes de alineación a través de justificar-contenido y alinear-yo, cualquier espacio libre positiva se distribuye a los márgenes de automóviles en esa dimensión.

Dicho de forma más simply:

Si se aplican los márgenes de automóviles a un elemento de flexión, que el artículo será automáticamente ampliar su margen específico para ocupar el espacio adicional en el flex contenedor

Aparte: el enfoque de diseño de "Flexbox" "normal" probablemente sea flexionar una sección central ala <div id="main>...</div> al 100% verticalmente, que también haría que un pie de página se "pegue" en la parte inferior. Este enfoque nos muestra que el modelo de caja flexible es, de hecho, lo suficientemente flexible como para permitirnos cambiar el tamaño/mover elementos aislados.

body { 
 
    display: flex; 
 
    flex-direction: column; 
 
    min-height: 100vh; 
 
} 
 

 
#footer { 
 
    background-color: #efefef; 
 
    flex: 0 0 50px;/*or just height:50px;*/ 
 
    margin-top: auto; 
 
}
<p>we've assumed only that there's random space-taking content above the footer...</p> 
 

 
<p>lorem ipsum dolor flex...</p> 
 
<div> 
 
    <p>random content.</p><p>random content.</p><p>random content.</p><p>random content.</p> 
 
</div> 
 
<div id="footer">FOOTER</div>

0

Esta es otra solución que utilizo usando jQuery. Para configurarlo, no necesita codificar mucho y solo necesita HTML.

<!doctype html> 
 
<html> 
 

 
<head> 
 
    <meta charset="utf-8"> 
 
    <title>Your title</title> 
 
    <link rel="stylesheet" href="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.css"> 
 
    <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script> 
 
    <script src="https://code.jquery.com/mobile/1.4.5/jquery.mobile-1.4.5.min.js"></script> 
 
</head> 
 

 
<body> 
 
    <div data-role="page"> 
 
    <div data-role="header" data-position="fixed"> 
 
     <h1>Your Header</h1> 
 
    </div> 
 
    <div data-role="main" class="ui-content"> 
 
     <p style="font-size: 300%;"> 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     Some text to enable scrolling... 
 
     </p> 
 
    </div> 
 
    <div data-role="footer" data-position="fixed"> 
 
     <h1>Your Footer</h1> 
 
    </div> 
 
    </div> 
 
</body> 
 

 
</html>

Esto es de w3schools - fixed toolbars, pero pensé que podría ser más útil que algunas otras respuestas.

Cuestiones relacionadas