Ver Mensaje Individual
  #3 (permalink)  
Antiguo 07/08/2014, 06:36
Avatar de Djoaq
Djoaq
 
Fecha de Ingreso: septiembre-2012
Ubicación: Barcelona
Mensajes: 271
Antigüedad: 11 años, 7 meses
Puntos: 38
Respuesta: Animaciones secuenciales en javascript

Cita:
Iniciado por kalvinman Ver Mensaje
Hola amigos, verán quiero agregarle algo de dinamismo a una presentación web, entonces me gustaria que al entrar se animaran varios objetos usando jquery y de ser posible la librería de css que estoy usando animate.css el punto es que necesito que se anime como una linea de tiempo, es decir primero una animación, luego otra, luego otra y así, entonces como podría hacerlo con jquery?
Hola te recomiendo que le eches un vistazo a JQUERY UI tiene algunos efectos que te pueden interesar.

http://jqueryui.com/show/

Hay que tener en cuenta que hay 2 opciones :

El metodo effect() ; que sirve para desecandenar el efecto cuando hay una interacción del user ..
onclick , onmouseenter onkeyp .. etc.. :

Código HTML:
Ver original
  1. <!doctype html>
  2. <html lang="en">
  3.   <meta charset="utf-8">
  4.   <title>Prueba de Animaciones</title>
  5.   <link rel="stylesheet" href="//code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css">
  6.   <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  7.   <script src="//code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
  8.   <script>
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.     $( "#boton" ).click(function() {
  3.       $('.contenedor').effect('bounce','slow'); //el primer parameto le pasamos el efecto deseado , el segundo parametro le pasamos la duracion , tambien acepta un entero por ejemplo 220;
  4.     });
  5.  
  6.      $( "#boton" ).click(function() {
  7.       $('.contenedor').effect('bounce','slow',function(){//te en cuenta que podemos introducir callbacks para ejecutar otras acciones como por ejemplo añadirle otro efecto etc..o seleccionar otro elemento y animarle al finalizar este.
  8.         alert("prueba!");
  9.       });
  10.     });
  11.   });
Código HTML:
Ver original
  1. </head>
  2. <button id="boton">effecto</button>
  3. <div class="contenedor">
  4.   <div id="effect">
  5.     <h3>Effect</h3>
  6.     <p>
  7.       Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. Nulla lorem metus, adipiscing ut, luctus sed, hendrerit vitae, mi.
  8.     </p>
  9.   </div>
  10. </div>
  11. </body>
  12. </html>

En tu caso lo que quieres hacer es que los elementos que quieras aparezcan al cargar la pagina , por lo tanto debes esconderlos y luego mostrarlos ejemplos :

Código HTML:
Ver original
  1. <!doctype html>
  2. <html lang="en">
  3.   <meta charset="utf-8">
  4.   <title>Prueba de Animaciones</title>
  5.   <link rel="stylesheet" href="//code.jquery.com/ui/1.11.0/themes/smoothness/jquery-ui.css">
  6.   <script src="//code.jquery.com/jquery-1.10.2.js"></script>
  7.   <script src="//code.jquery.com/ui/1.11.0/jquery-ui.js"></script>
  8.   <script>
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.    
  3.     $('.contenedor').hide();
  4.       $('.contenedor').show('scale',220); //mismo funcionamiento primero hacemos hide para al cargar la pagina el elemento no aparezca y despues lo hacemos aparecer con un efecto scale y 220 ms de duración.
  5.   });
Código HTML:
Ver original
  1. </head>
  2. <div class="contenedor">
  3.   <div id="effect">
  4.     <h3>Effect</h3>
  5.     <p>
  6.       Etiam libero neque, luctus a, eleifend nec, semper at, lorem. Sed pede. Nulla lorem metus, adipiscing ut, luctus sed, hendrerit vitae, mi.
  7.     </p>
  8.   </div>
  9. </div>
  10. </body>
  11. </html>

Para hacer lo que quieres , te recomiendo no tirar mucho de callbacks , dentro de callbacks ...
Para ello te recomiendo recorrer el DOM mediante each ( vendría a ser un for que retorna los elementos encontrados mediante el selector indicado ).
Para ello puedes hacer algo como :

Código Javascript:
Ver original
  1. $('.div_clase').each(function(i) { //each busca cada uno de los elementos
  2.     $(this).children().delay(800*i).fadeOut('fast', function() { //children hace referencia  a los elementos hijos del selector $('.div_clase'),  this hace referencia al selector sobre el que hemos desencadenado el evento $('.div_clase') , delay retarda el efecto y multiplicamos la duración por i (indice de vuelta de each por el tiempo de retraso entre efecto y efecto)
  3.         $(this).fadeIn('slow');
  4.     });
  5. });

Espero haberte ayudado !
Un saludo!

Última edición por Djoaq; 07/08/2014 a las 07:01