domingo, 29 de enero de 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

No hay comentarios:

Publicar un comentario