Foros del Web » Creando para Internet » CSS »

Problema con propiedades de Divs

Estas en el tema de Problema con propiedades de Divs en el foro de CSS en Foros del Web. Hola, Este problema es un tanto difícil de explicar, espero que puedan entender y ayudarme. Resulta que tengo dos Divs (#page y #footer) y cuentan ...
  #1 (permalink)  
Antiguo 06/03/2012, 12:26
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 15 años, 3 meses
Puntos: 8
Problema con propiedades de Divs

Hola,

Este problema es un tanto difícil de explicar, espero que puedan entender y ayudarme.

Resulta que tengo dos Divs (#page y #footer) y cuentan con las siguiente propiedades:

Código CSS:
Ver original
  1. #footer {
  2.     position:absolute;
  3.     overflow:hidden;
  4.     left:0px;
  5.     right:0px;
  6.     bottom:0px;
  7.     background:#dddddd;
  8.     color:#9b9a9a;
  9.     padding:10px 25px 10px 25px;
  10.     z-index: 3;
  11. }
  12.  
  13. #page {
  14.     position: absolute;
  15.     overflow: hidden;
  16.     margin-bottom: 50px;
  17.     top: 45%;
  18.     width: 80%;
  19.     margin-left: 10%;
  20.     margin-right: 10%;
  21.     margin-bottom: 50px;
  22.     z-index: 3;
  23. }

Trataré de explicarlo con imágenes. Lo que obtengo es esto:



Hasta ahí todo bien. El problema es que cuando se cambia el tamaño de la ventana o se ve en una resolución más baja obtengo lo siguiente:



El div #footer no respeta el margin-bottom de #page, y bueno, por estar en position:absolute es obvio que no lo haga, pero esa es justamente mi duda, ¿cómo hago para que#footer esté siempre al final de la página, y que, si por alguna razón #footer y #page se encuentran no se superpongan? (imagen de ejemplo)



Espero que se haya entendido y puedan ayudarme. Saludos!
  #2 (permalink)  
Antiguo 06/03/2012, 13:26
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Respuesta: Problema con propiedades de Divs

hola kenproxd, creo que hablamos sobre tu duda en este tema.
  #3 (permalink)  
Antiguo 06/03/2012, 14:01
Avatar de emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 4 meses
Puntos: 1567
Respuesta: Problema con propiedades de Divs

De comparar el código con las imágenes surge algo muy claro

#page no esta en top:45%
#page no tiene 80% de width, está al 100%
#page no tiene ningún height definido
y así varias cosas más, o tu css esta mal o las imágenes de referencia están mal, vas a tener que ser más preciso con tu planteo


Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.
  #4 (permalink)  
Antiguo 06/03/2012, 14:21
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 15 años, 3 meses
Puntos: 8
Respuesta: Problema con propiedades de Divs

Cita:
Iniciado por cristian_cena Ver Mensaje
hola kenproxd, creo que hablamos sobre tu duda en este tema.
Gracias por el link!
Intenté acomodarlo usando este ejemplo y me quedó de la siguiente manera:


(Esta imagen es la parte final del div wrapper hasta el footer).

Código CSS:
Ver original
  1. * {
  2.     margin: 0;
  3. }
  4. html, body {
  5.     height: 100%;
  6.     margin: 0;
  7.     background:#000  url(images/au_bg.jpg) center no-repeat fixed;
  8.     font-family: Arial, Helvetica, sans-serif;
  9.     font-size: 11px;
  10. }
  11. .wrapper {
  12.     padding-top: 30%;
  13.     min-height: 100%;
  14.     height: auto !important;
  15.     height: 100%;
  16.     z-index: 5;
  17.     width: 80%;
  18.     margin-left: 10%;
  19.     margin-right: 10%;
  20.     margin-bottom: 30px;
  21. }
  22. .push {
  23.     height: 4em;
  24.     background: #F00;
  25. }
  26. .footer {
  27.     background:#dddddd;
  28.     color:#9b9a9a;
  29.     padding:10px 25px 10px 25px;
  30.     overflow: hidden;
  31.     clear: both;
  32. }

Código HTML:
Ver original
  1. <div class="wrapper">
  2.    
  3.     <div style="float: left;">
  4.        ...
  5.     </div>
  6.     <div class="...">...</div>
  7.     <div class="...">
  8.         ...
  9.     </div>
  10.    
  11.     <div class="push"></div>
  12. </div>
  13. <div class="footer">
  14.     ...
  15. </div>

Al parecer la propiedad height: 100% del body ocaciona este tremendo espacio entre el wrapper y el footer.

El div push está de color rojo para poder distinguirlo y ver si funciona como debería.

Espero puedas seguir ayudandome :)

Cita:
Iniciado por emprear Ver Mensaje
De comparar el código con las imágenes surge algo muy claro

#page no esta en top:45%
#page no tiene 80% de width, está al 100%
#page no tiene ningún height definido
y así varias cosas más, o tu css esta mal o las imágenes de referencia están mal, vas a tener que ser más preciso con tu planteo


Saludos
Gracias por el interés. Las imágenes de muestra las hice únicamente para explicar la superposición que ocurre entre un div y otro ya que tanto el ancho como la posición de #page no son el problema.
  #5 (permalink)  
Antiguo 06/03/2012, 17:03
Avatar de cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 15 años, 5 meses
Puntos: 269
Respuesta: Problema con propiedades de Divs

Se que estamos en foro de css y me van a criticar por esto, pero a mi modo de ver encarar el problema de los footer pegadizos solo con css ensucia el html y css, en su lugar una buena alternativa me parece esta. Un plugin jquery que solo debes llamar sobre el elemento que deseas que sea tu footer pegadizo.
Antes que vengan a descargar la artillería contra el uso de librerías también decir que si tu proyecto no soporta el peso de jquery (en serio?) podes escribir tu propia función.

Desventajas de este método:
debes cargar una librería y un plugin
debes usar javascript, navegadores que lo tengan desactivado (0,000001% de los usuarios) no lo verán.
ventajas:
una linea de codigo y lo tenes hecho.
no ensucias el html
no escribis css extra

probalo:
Código HTML:
Ver original
  1. <!DOCTYPE HTML>
  2. <html lang="es-es">
  3.     <head>
  4.         <title>Pie siempre abajo</title>
  5.         <meta charset="UTF-8">
  6.         <style type="text/css">
  7.             header, nav, footer { background: #ccc; border: 1px dashed #707070; padding: 2em; }        
  8.         </style>
  9.         <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  10.         <script type="text/javascript">
  11.             // aisla este plugin en un .js externo
  12.             var footer;
  13.             jQuery.fn.extend({
  14.                 stickyFooter: function(options) {
  15.                     footer = this;
  16.                     function positionFooter() {
  17.                         var docHeight = $(document.body).height() - $("#sticky-footer-push").height();
  18.                         if(docHeight < $(window).height()){
  19.                            var diff = $(window).height() - docHeight;
  20.                            if (!$("#sticky-footer-push").length > 0) {
  21.                                 $(footer).before('<div id="sticky-footer-push"></div>');
  22.                             }
  23.                             $("#sticky-footer-push").height(diff);
  24.                             $("#sticky-footer-push").height(diff);
  25.                         }
  26.                     }
  27.                     positionFooter();
  28.                     $(window).scroll(positionFooter).resize(positionFooter);
  29.                 }
  30.             });
  31.         </script>
  32.         <script type="text/javascript">  
  33.             $(function(){ //ready
  34.               $("footer").stickyFooter(); //llamas el plugin sobre el elemento que queres que sea el footer pegadizo
  35.             })
  36.         </script>
  37.     </head>
  38.     <body>
  39.         <header>Header</header>
  40.         <nav>
  41.             <a href="#">item n</a><span> | </span>
  42.             <a href="http://www.drupalcoder.com/blog/cross-browser-sticky-footer-with-fluid-height-using-jquery" target="_blank">fuente: tutorial / explicación</a>
  43.         </nav>
  44.         <section>
  45.             <p>Lorem ipsum ...</p>
  46.             <p>Lorem ipsum ...</p>
  47.             <p>Lorem ipsum ...</p>
  48.             <p>Lorem ipsum ...</p>
  49.             <p>Lorem ipsum ...</p>
  50.             <p>Lorem ipsum ...</p>
  51.         </section>
  52.         <footer>
  53.             <div>margin-top</div>
  54.             <div>sticky footer, facil y limpio</div>
  55.         </footer>
  56.     </body>
  57. </html>

saludos.
  #6 (permalink)  
Antiguo 06/03/2012, 22:01
 
Fecha de Ingreso: agosto-2009
Mensajes: 349
Antigüedad: 15 años, 3 meses
Puntos: 8
Respuesta: Problema con propiedades de Divs

Muchas gracias cristian_cena! problema resuelto.

Etiquetas: divs, propiedades, tamaño, fondo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:45.