2012-02-24 13 views
9

Aquí es el jsFiddle: http://jsfiddle.net/NKgG9/¿Cómo desvanezco un div in/out en el desplazamiento de página?

básicamente estoy queriendo esas cajas rosadas ser en el programa de carga de la página de forma normal, pero tan pronto como el usuario se desplaza hacia abajo la página que queremos que se desvanecen y desaparecen. Cuando el usuario se desplaza de vuelta a su posición o a la parte superior de la ventana del navegador, quiero que esos recuadros rosas vuelvan a fundirse. Soy inútil con JS, qué bueno que lo haga con algo de ayuda sobre cómo hacer esto.

Toda ayuda apreciada.

+0

¿Desea que se desvanezcan hacia adentro/hacia afuera al nivel según el valor del desplazamiento, o simplemente para aplicar el efecto tan pronto como se detecte el desplazamiento? – Cheery

+0

Lo ideal es que se desvanezca cuando se detecte desplazamiento y luego vuelva a fundirse cuando el usuario regrese a la parte superior de la ventana del navegador – egr103

Respuesta

13

ejemplo muy sencillo: http://jsfiddle.net/a4FM9/2/

var divs = $('.social, .title'); 
$(window).scroll(function(){ 
    if($(window).scrollTop() <10){ 
     divs.stop(true,true).fadeIn("fast"); 
    } else { 
     divs.stop(true,true).fadeOut("fast"); 
    } 
});​ 
+0

Eso es increíble. Saludos por eso @Cery! Sin embargo, me he dado cuenta de que hay un problema donde parpadean los div cuando intentas desplazarte hacia arriba, cuando estás en la parte superior de la página. ¿Hay alguna forma de evitar que esto suceda? – egr103

+0

@ egr103 reemplace 'if ($ (ventana) .scrollTop() == 0)' por 'if ($ (ventana) .scrollTop() <10)', por ejemplo. 10 píxeles no jugarán un papel muy importante, pero evitarán tal efecto. http://jsfiddle.net/a4FM9/1/ – Cheery

+0

O mira aquí http://jsfiddle.net/a4FM9/2/ – Cheery

4

gusta esta? http://jsfiddle.net/NKgG9/6/

$(function(){ 
    var targets = $(".title, .social"); 
    if($(window).scrollTop() > 10){ 
     targets.hide(); 
    } 
    $(window).scroll(function(){ 
     var pos = $(window).scrollTop(); 
     if(pos > 10){ 
      targets.stop(true, true).fadeOut("fast"); 
     } else { 
      targets.stop(true, true).fadeIn("fast"); 
     } 
    }); 

}); 

La idea básica: suscribirse al evento de desplazamiento. Si la posición de desplazamiento se mueve más allá de cierto punto, inicie el fundido de salida e igualmente si el usuario se desplaza hacia arriba. Algunos detalles importantes: realice un seguimiento si ya se está desvaneciendo (se muestra la variable) y detenga el fundido continuo si comenzar un nuevo fundido.

+0

¡Felicitaciones increíbles, Andre! – egr103

+0

Esto tiene el mismo problema que la primera solución, ya que cuando estás a medio camino de la página en Firefox y actualizas la página, los dos divs vuelven a aparecer. ¿Cómo puedo arreglar esto? – egr103

+0

He actualizado la respuesta. Si bien no pude volver a crear el problema en Firefox, esto debería detenerlo: si la ventana ya está inicialmente desplazada, oculte los elementos. –

Cuestiones relacionadas