Páginas

30 enero 2012

Ventanas flotantes sencillas con jQuery

Una forma muy simple de usar la librería jQuery para generar un caja flotante que se desplaza a medida que hacemos scroll sobre la página.

El HTML conviene ponerlo antes de </body> porque lo vamos a posicionar de manera absoluta así que debe estar fuera de cualquier otro contenedor que tenga la propiedad position:relative y dentro de ese DIV agregaremos cualquier cosa, en este caso, enlaces con íconos:
<div id="caja_flotante">
  <div id="cont_caja_flotante">
    <a href="#"><img src="URL_IMAGEN_1" /></a>
    <a href="#"><img src="URL_IMAGEN_2" /></a>
    <a href="#"><img src="URL_IMAGEN_3" /></a>
  </div>
</div>
Y las reglas de estilo que ponemos antes de &/head>:
<style>
#caja_flotante{
  left: 0; /* o le damos un valor para separarlo del borde izquierdo de la ventana */
  position: absolute;
  top: 0;  /* o le damos un valor para separarlo del borde superior de la ventana */
  width: ANCHOpx; /* definimos su ancho */
  /* cualquier otra propiedad gráfica como background, border, etc */
}
</style>
Y por debajo de eso, el script:
<script type='text/javascript'>
//<![CDATA[
$(document).ready(function() {
  var posicion = $("#caja_flotante").offset();
  var margenSuperior = 15;
  $(window).scroll(function() {
    if ($(window).scrollTop() > posicion.top) {
      $("#caja_flotante").stop().animate({
        marginTop: $(window).scrollTop() - posicion.top + margenSuperior
      });
    } else {
      $("#caja_flotante").stop().animate({
        marginTop: 0
      });
    };
  });
});
//]]>
</script>
El ejemplo online puede verse en esta página donde, en lugar de posicionarlo a la izquierda de la ventana del navegador, lo he ubicado a la izquierda del DIV contenedor del blog que en este caso es #outer-wrapper y como sé que mide 600 pixeles de ancho, la imagen se coloca en el centro de la pantalla y luego, se la desplaza hacia un lado, un poco más que la mitad del ancho de ese contenedor:
<style>
#caja_flotante{
  left: 50%;
  margin-left: -370px;
  position: absolute;
  top: 50px; 
  width: 64px;
}
</style>

REFERENCIAS:webintenta.com

14 comentarios:

  1. @Vagabundia,
    Me parece excelente esta cajita flotante con los botones sociales.
    Por cierto, tienes cambiadas las direcciones en ellos.
    En facebook tienes el de twitter y viceversa.

    Saludos.

    ResponderBorrar
  2. Muy bueno JMiur! pero se me ocurre que sería genial si pudieras posicionar en un primer momento la caja en un top:250px por ejemplo, y que la caja empezase a bajar con el usuario a medida que use el scroll pero a no siempre con top250 sino por ejemplo a 50px. ¿es posible? no sé si me he explicado muy bien :d

    saludos!

    ResponderBorrar
  3. Me parece genial tu aporte, muy útil y extremadamente sencillo y claro, muchas gracias.

    ResponderBorrar
  4. necesito ayuda, requiero la libreria de jquery?

    ResponderBorrar
    Respuestas
    1. Sí. Para usar lo que indica la entrada, se requiere jQuery.

      Borrar
  5. ¡Excelente articulo!. Esta buscando algo así porque el código que me da Share This no funciona cuando tengo varios archivos .inc que terminan formando la página index. Ya hice una prueba y funciona. Ahora me queda probar con los botones sociales.

    Éxitos.

    ResponderBorrar
  6. Hola JMiur.
    Conozco algo de Jquery, y he intentado implantar estas ventanas flotantes, pero algo me falta que no llega a moverse.

    Entiendo que necesito la librería JQuery y tengo en el servidor el jquery.jplayer.min.js pero no me funciona.

    El enlace es este:
    http://www.marketingprodigioso.com/pro/sobre-nosotros/index.htm

    Te agradecería tu ayuda, de cual es lo que me faltaba.
    Te escribo desde una cuenta de Gmail, pero la que utilizo es esta:
    jesus[a]marketingprodigioso com

    Muchísimas gracias por adelantado.
    Jesús Torralba

    ResponderBorrar
    Respuestas
    1. No veo el script colocado en tu sitio.

      Tampoco se qué es el jquery.jplayer.min.js y ese script provoca un error en el navegador.

      Borrar
  7. hola! y felicitaciones por el tutorial, pero me puedes explicar por favor como hay que implementar la libreria JQUERY?

    ResponderBorrar
    Respuestas
    1. SImplemente, la debes cargar; por ejemplo, desde los repositorios de Google:

      http://vagabundia.blogspot.com/2013/01/actualizacion-de-jquery-y-posibles.html

      Borrar
  8. una preguna buenisimo aporte y si lo quiero poner arriba horizontalmente que balla siempre arriba gracias

    ResponderBorrar

Nota: sólo los miembros de este blog pueden publicar comentarios.