Animación simple utilizando fadeIn y fadeOut de jQuery
19 oct
Hace poco os enseñamos como trabajar con las funciones fadeIn y fadeOut de jQuery, pero con ejemplos poco prácticos, hoy vamos a darle un uso bastante práctico para hacer pequeñas animaciones sin Flash, con HTML y jQuery.
Empezaremos como siempre, añadiendo jQuery a nuestro sitio web, y vamos a definir unas variables de tiempo, para poder cambiar rápidamente la duración de nuestra animación, el tiempo del fade, el tiempo de inicio, etc.
<script type="text/javascript" src="../js/jquery-1.4.2.min.js"></script> <script type="text/javascript"> $(document).ready(function(){ var tiempo_inicio_anim = 200; var tiempo_entre_img = 3000; var tiempo_fade = 1000; }); </script>
Una vez hemos definido las variables, utilizando setTimeout vamos a ejecutar una función con la variable tiempo_inicio_anim que nos dirá cuando ejecutar la animacion:
<script type="text/javascript"> $(document).ready(function(){ var tiempo_inicio_anim = 200; var tiempo_entre_img = 3000; var tiempo_fade = 1000; function animacion_simple() { } setTimeout(function() { animacion_simple(); }, tiempo_inicio_anim); }); </script>
A los 200 milisegundos como indica la variable tiempo_inicio_anim, ejecutaremos la función animacion_simple();
Vamos a añadir 3 imágenes para hacer fadeIn y fadeOut.
<div class="animacion_img"> <img src="foto1.jpg" width="600" height="450" class="foto1" /> <img src="foto2.jpg" width="600" height="450" class="foto2" /> <img src="foto3.jpg" width="600" height="450" class="foto3" /> </div>
Una vez que ya tenemos hecho el principio de nuestro script para que inicie la animación, y el HTML con las 3 imágenes, vamos a hacer la animación tirando de fadeIn y fadeOut, mostrando y ocultando las 3 imágenes de nuestro ejemplo:
<script type="text/javascript"> $(document).ready(function(){ var tiempo_inicio_anim = 200; var tiempo_entre_img = 3000; var tiempo_fade = 1000; function animacion_simple() { // Mostramos la foto 1 $(".foto1").fadeIn(tiempo_fade); // Cuando pasen otros 3000 milisegundos, ocultamos la foto 1 y mostramos la foto 2 setTimeout(function() { // Ocultamos la foto 1 $(".foto1").fadeOut(tiempo_fade); // Mostramos la foto 2 $(".foto2").fadeIn(tiempo_fade); }, tiempo_entre_img); // Cuando pasen otros 3000 milisegundos, ocultamos la foto 2 y mostramos la foto 3 setTimeout(function() { // Ocultamos la foto 2 $(".foto2").fadeOut(tiempo_fade); // Mostramos la foto 3 $(".foto3").fadeIn(tiempo_fade); }, tiempo_entre_img*2); // Cuando pasen otros 3000 milisegundos, ocultamos la foto 3 y volvemos a iniciar la animación setTimeout(function() { // Ocultamos la foto 3 $(".foto3").fadeOut(tiempo_fade); // Iniciamos otra vez la animación animacion_simple(); }, tiempo_entre_img*3); } //Empezamos la animación a los 200 milisegundos setTimeout(function() { animacion_simple(); }, tiempo_inicio_anim); }); </script>
Ya tenemos el Script terminado, se podría haber hecho un poco más automático, buscando el número de imágenes dentro del div animacion_img, pero para empezar, es un ejemplo bastante sencillo y creo que legible y facil de entender para todos.
Aquí tenéis el ejemplo.
hola, se puede cambiar otro tipo de efecto fade entre imagen e imagen? he visto otras webs que utilizan jquery y tienen otros efectos… gracias
Hola nacho, claro que es posible, se pueden realizar muchísimos efectos con jQuery, próximamente publicaremos un tutorial igual pero con otros efectos.
Saludos
Muy bueno, después de esto me cambiare a jquery para cualquier animación.
Gracias
Muchas gracias!!!
Se me muestran las 3 imagenes en el navegador, por qué?