Ver Mensaje Individual
  #5 (permalink)  
Antiguo 06/03/2012, 17:03
Avatar de cristian_cena
cristian_cena
Colaborador
 
Fecha de Ingreso: junio-2009
Mensajes: 2.244
Antigüedad: 14 años, 10 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.