pagina keyframes funcion examples ejemplos ejecutar despues cargar carga avanzadas asincrona antes animaciones javascript jquery

keyframes - ejecutar javascript despues de cargar pagina



Termina una animaciĆ³n y luego comienza la otra (8)

Tengo dos divs y dos enlaces separados que desencadenan slideDown y slideUp para los divs.

Cuando uno de los divs se desliza hacia abajo y hago clic en el otro, oculto el primer div (slidingUp) y luego abro el otro div (slidingDown) pero, por el momento es como mientras un div se desliza hacia abajo, el otro, también al mismo tiempo, se desliza hacia arriba.

¿Hay alguna manera de decirle a jQuery que espere para terminar deslizándose hacia abajo de un div y solo luego empezar a deslizar hacia el otro?


La mayoría de las funciones de jquery tienen un parámetro de devolución de llamada, puede simplemente pasar una función a eso.


Puede usar una devolución de llamada para disparar un próximo efecto cuando el primero está listo:

$("#element1").slideUp( "slow", function(){ $("#element2").slideDown("slow"); } );

En este ejemplo, la función definida como segundo argumento del método slideUp se llama después de que la animación de slideUp ha finalizado.

Ver la documentación: http://docs.jquery.com/Effects/slideUp


Use el segundo parámetro de la función: devolución de llamada. Por ejemplo,

$(this).slideDown( speed, function(){ $(this).slideUp(); });



$("#thisDiv").slideUp("slow", function() { // This function is called when the slideUp is done animating $(this).doNextThing(); });


Deberías encadenarlo así

function animationStep1() { $(''#yourDiv1'').slideUp(''normal'', animationStep2); } function animationStep2() { $(''#yourDiv2'').slideDown(''normal'', animationStep3); } // etc

Por supuesto, puede darle vida a esto con funciones recursivas, matrices con colas de animación, etc., según sus necesidades.


$(''#Div1'').slideDown(''fast'', function(){ $(''#Div2'').slideUp(''fast''); });

Editar: ¿Has comprobado el complemento de acordeón (si eso es lo que intentas hacer)?


Un ejemplo un poco más limpio y con un retraso entre la animación:

$("#elem").fadeIn(1000).delay(2000).fadeOut(1000);