Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] ¿Cómo hacer background aleatorio cada x tiempo y con efecto FADE?

Estas en el tema de ¿Cómo hacer background aleatorio cada x tiempo y con efecto FADE? en el foro de Javascript en Foros del Web. Buena tarde, ojalá puedan ayudarme. Quiero hacer lo sig: que la imagen de background cambie aleatoriamente cada x tiempo, y que la transición entre imágenes ...
  #1 (permalink)  
Antiguo 18/12/2013, 14:27
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Sonrisa ¿Cómo hacer background aleatorio cada x tiempo y con efecto FADE?

Buena tarde, ojalá puedan ayudarme.

Quiero hacer lo sig: que la imagen de background cambie aleatoriamente cada x tiempo, y que la transición entre imágenes tenga el efecto fade. Eso es todo.

El siguiente código funciona para la parte de que el background cambie cada 3 segundos de forma aleatoria.
Código Javascript:
Ver original
  1. setInterval( function()
  2. {
  3.     var numColorAleatorio = Math.floor( Math.random()*6 );
  4.     document.getElementById("body").style.backgroundImage = 'url(fondo_0' + numColorAleatorio + '.jpg)';   
  5. }, 3000);
  6. </script>


La bronca está con lo del efecto fade. Googleando me encontré con este sitio: http://www.disegnocentell.com.ar/notas2.php?id=203, en el cual hay un javascript para hacer el efecto FADE-in y FADE-out a una imagen.

Le he movido por todos lados para adecuarlo a mis necesidades, pero no logro hacerlo funcionar como deseo. Aquí les pongo lo que llevo hasta el momento. No logro avanzar más. El sig código hace casi lo que necesito, con la diferencia que el efecto fade lo hace sólo entre la 1ra y 2da imágenes, no al resto. Pongo de una vez todo el código del archivo para evitarles la molestia del copy-paste por partes.

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <head>
  4. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
  5. <title>FADE IN OUT ALPHA</title>
  6. <style type="text/css">
  7. html, body {width:100%; height:100%;}
  8.  
  9. function set_opacity(div, value) {
  10.     div.style.opacity = value;
  11.     div.style.MozOpacity = value;
  12.     div.style.KhtmlOpacity = value;
  13.     div.style.filter = 'alpha(opacity=' + value*100 + ')';
  14.     div.style.zoom=1;//necesario para Explorer
  15. }
  16. var transicion=function(inicio,fin,segundos){
  17.     var _this=this;
  18.     this.test=0;
  19.     if(_this.intervalo)clearInterval(_this.intervalo);
  20.     if(this.val && Math.abs(fin-_this.val)<0.01)return;
  21.     this.val=!this.val?inicio<1?inicio+.0001:inicio:this.val;
  22.    set_opacity(this, this.val);
  23.    this.pasos=(fin-inicio)/100;
  24.    this.pausa=segundos*10;
  25.    this.intervalo=setInterval(
  26.    function(){
  27.        if(_this.test>99 || Math.abs(fin-_this.val)<0.01){
  28.          clearInterval(_this.intervalo);
  29.        }
  30.        _this.test++;
  31.        //document.getElementById("log").innerHTML=_this.test;
  32.        _this.val=_this.val+_this.pasos;
  33.        if(_this.val<=.01)  
  34.            _this.style.display='none';
  35.        else
  36.            _this.style.display='block';
  37.        set_opacity(_this, _this.val);
  38.    },this.pausa);
  39. }
  40.  
  41. function ver(){
  42.    var obj=document.getElementById("fondo");
  43.    transicion.call(obj,0,1,3);
  44. //  setTimeout( cerrar(), 4000); //Entiendo que debería funcionar la función cerrar() 4 segundos después que termina de ejecutarse la función ver(), pero no pasa así.
  45. }
  46.  
  47.  
  48. function cerrar(){
  49.    var obj=document.getElementById("fondo");
  50.    transicion.call(obj,1,0,3);
  51. }
  52.  
  53.  
  54.  
  55.    
  56. /* *****************************************************************************************
  57.   *****************************************************************************************
  58.   ****   El siguiente código hace que se cambie aleatoriamente de background, pero el  ****
  59.   ****   FADE sólo funciona entre la 1ra y 2da imágenes. Al resto no les pone FADE.    ****
  60.   *****************************************************************************************
  61.   ***************************************************************************************** */
  62. setInterval( function()
  63. {
  64.     ver();
  65.     var numColorAleatorio = Math.floor( Math.random()*6 );
  66.     document.getElementById("fondo").style.backgroundImage = 'url(fondo_0' + numColorAleatorio + '.jpg)';
  67. }, 3000);
  68.  
  69. </script>  
  70. </head>
  71.  
  72.   <div id="fondo" style="position:absolute; top:0; left:0; width:100%; height:100%; background-image:url(fondo_01.jpg)">
  73.   </div>
  74. </body>
  75. </html>



Saludos cordiales.
  #2 (permalink)  
Antiguo 18/12/2013, 14:43
Avatar de cell001  
Fecha de Ingreso: abril-2010
Mensajes: 40
Antigüedad: 14 años
Puntos: 5
Respuesta: ¿Cómo hacer background aleatorio cada x tiempo y con efecto FADE?

No se mucho de JS pero te podría servir esto http://buildinternet.com/project/supersized/

En la pagina "demos" hay una version con FADE. Yo la utilicé para una pagina y me sirvió bastante bien, en el demo viene también un archivo donde puedes cambiar por la cantidad de tiempo que quieras, el tiempo que tarda en hacer el efecto, las imágenes y modificando un poco mas también puedes quitarle los botones que tiene para que solo cambie el fondo automáticamente sin intervención del usuario

El único detalle es que utiliza JQuery pero para eso utilizas ya sea el de gogle o uno propio

Suerte
  #3 (permalink)  
Antiguo 18/12/2013, 17:56
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
De acuerdo Respuesta: ¿Cómo hacer background aleatorio cada x tiempo y con efecto FADE?

Cita:
Iniciado por cell001 Ver Mensaje
No se mucho de JS pero te podría servir esto http://buildinternet.com/project/supersized/ ...
Gracias por responder, cell001. Ya revisé el link que dejaste. Es bueno, me gustó. La bronca con estas cosas, es que no satisfacen las necesidades de programación que algunos tienen en mayor o menor medida, pues todo ya está hecho. Además, si por alguna razón falla el servidor donde están alojados esos proyectos, automáticamente se cae la parte de tu página que ocupa su framework. No hay nada mejor que tener todo el código en tu propio servidor. Sin embargo, el tal Supersized te saca de problemas y, como sea, es un recurso más. Todo sirve.

No obstante, esperemos que alguien más pueda ayudar con el código que posteé más arriba.
  #4 (permalink)  
Antiguo 18/12/2013, 20:59
Avatar de cell001  
Fecha de Ingreso: abril-2010
Mensajes: 40
Antigüedad: 14 años
Puntos: 5
Respuesta: ¿Cómo hacer background aleatorio cada x tiempo y con efecto FADE?

En parte es cierto, yo también prefiero hacer por mi mismo los códigos que hago por completo pero como recién estoy aprendo JS es por lo que los uso.

Sin embargo lo que comentas sobre que falle el servidor es un tanto falso, todo lo puedes hacer usando tu propio servidor sin que necesites depender de otro servidor "x"

Deja te muestro:

Si descargas el rar, hay una carpeta llamada slideshow, dentro hay un archivo llamado fade.html

Ese archivo tiene las imagenes de ejemplo que salen en el ejemplo, pero puedes poner cualquier cantidad de imagen que desees en tu servidor, solo colocando el link correctamente.

Ejemplo:
Código HTML:
Ver original
  1. // Este es un pedazo del codigo donde están las imágenes
  2. {image : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/slides/kazvan-1.jpg', title : 'Image Credit: Maria Kazvan', thumb : 'http://buildinternet.s3.amazonaws.com/projects/supersized/3.2/thumbs/kazvan-1.jpg', url : 'http://www.nonsensesociety.com/2011/04/maria-kazvan/'},
  3.  
  4. //Tu solo cambialo por los links que desees y para que no aparesca el cursor de vinculo, quitas los URL ultimos asi
  5.  
  6. {image : 'images/tuimagen.jpg',}, {image : 'images/tuimagen2.jpg',},  //etc etc

Dentro del archivo fade.html también hay un vinculo que dice:
Código:
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
Este es el único link que si falla, puede fallar todo pues es un servidor externo al propio pero se puede utilizar un link propio. Solo hay que descargar el jquery y colocarlo en el servidor propio, se puede descargar de aquí http://jquery.com/download/ (jQuery 1.x o jQuery 2.x compressed), al final podria quedar algo asi:
Código HTML:
Ver original
  1. <script type="text/javascript" src="js/jquery-1.10.2.min.js"></script>

Y así no tendrías que depender de ningún servidor externo

Espero te sirva o a quien guste
  #5 (permalink)  
Antiguo 20/12/2013, 18:13
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Sonrisa Respuesta: ¿Cómo hacer background aleatorio cada x tiempo y con efecto FADE?

Cita:
Iniciado por cell001 Ver Mensaje
En parte es cierto, yo también prefiero hacer por mi mismo los códigos que hago por completo pero como recién estoy aprendo JS es por lo que los uso...
Tienes razón amigo cell001.

Por otro lado, en Internet Explorer 8 no funciona el proyecto Superzided que recomendaste. Hoy mismo actualicé el IE a la versión 9, y tampoco jaló. Actualicé inmediatamente al 10 y nada! Actualicé a la versión 11 y por fin jaló el Superzided y unas transiciones CSS que yo le había metido a mi menú.

Por eso necesitaba arreglar el código que posteé en un principio, porque incluso Internet Explorer 8 lo jala.

Tendré que buscar por otro lado.
  #6 (permalink)  
Antiguo 21/12/2013, 06:52
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: ¿Cómo hacer background aleatorio cada x tiempo y con efecto FADE?

prueba con este. falta la aleatoriedad
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}
  #7 (permalink)  
Antiguo 25/12/2013, 17:36
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Respuesta: ¿Cómo hacer background aleatorio cada x tiempo y con efecto FADE?

Cita:
Iniciado por IsaBelM Ver Mensaje
prueba con este. falta la aleatoriedad

Maestra IsabelM. Buen código y muy ligero. Y a diferencia del proyecto Superzided recomendado por el amigo Cell, sí jala en las versiones feas de IE.

Gracias.

Etiquetas: Ninguno
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 12:34.