2010-02-13 8 views

Respuesta

71

también

en lugar de .fadeIn() que pueda .animate({opacity:1})
y en lugar de .fadeOut() puedes .animate({opacity:0})

+2

Cuando se anima la opacidad, los clics en los elementos aún activan los controladores de eventos. Con 'visibility: hidden', los eventos son * no * disparados. – Jawa

+0

@Jawa, sí, pero la visibilidad no está animada y el OP quiere * desvanecerse hacia adentro/hacia afuera *.(* puede agregar 'visibility: hidden' una vez que la animación está completa, a través del parámetro' callback', para satisfacer ambas necesidades *) –

25

Puede probar esto por fadeOut:

$("something here").fadeOut("slow", function() { 
    $(this).show().css({visibility: "hidden"}); 
}); 

... y esto por fadeIn:

$("something here").hide().css({visibility: "visible"}).fadeIn("slow"); 
+0

Nice. Estaba intentando hacer esto, pero estaba teniendo problemas para hacer que el fade funcione, pero la devolución de llamada funciona. – nedned

18

Uso fadeTo:

El método .fadeTo() anima la opacidad de los elementos emparejados. Es similar al método .fadeIn() pero ese método muestra el elemento y siempre se desvanece al 100% de opacidad.

Las duraciones se expresan en milisegundos; los valores más altos indican animaciones más lentas, no más rápidas. Las cadenas 'fast' y 'slow' se pueden suministrar para indicar duraciones de 200 y 600 milisegundos, respectivamente. Si se suministra cualquier otra cadena, se utiliza la duración predeterminada de 400 milisegundos. A diferencia de los otros métodos de efectos, .fadeTo() requiere que se especifique explícitamente duration.

Si se suministra, la devolución de llamada se disparó una vez finalizada la animación ...

2

Gracias a 10gler mi solución a continuación, utilizando la visibilidad para evitar botón invisible clic, etc.

//fadeIn 
$("#x") 
    .css('visibility', 'visible') 
    .fadeTo('fast', 1); 

//fadeOut 
$("#x") 
    .fadeTo('fast', 0, function() { 
     $(this).css('visibility', 'hidden'); 
    }); 
+0

Gracias por el ejemplo. Funciona genial. –

0

Uso una combinación de las respuestas anteriores, esto funcionó bien para mí. Puede cambiar el tiempo de animación a su gusto.

Para fadeIn:

 $('selector').animate({opacity:1, visibility:'visible'}, 200); 

Para fadeOut:

 $('selector').animate({opacity:0, visibility:'hidden'}, 200); 

Asegúrese de ajustar la visibilty:'hidden' y opacity:0 en el inicio para evitar el estallido repentino en la primera aparición gradual de si la pantalla por defecto es oculto, de lo contrario no debería importar.

 $('selector').css({opacity:0, visibility:'hidden'}); 
Cuestiones relacionadas