Ver Mensaje Individual
  #6 (permalink)  
Antiguo 16/05/2012, 21:44
Avatar de Naahuel
Naahuel
 
Fecha de Ingreso: marzo-2011
Ubicación: localhost
Mensajes: 796
Antigüedad: 13 años, 1 mes
Puntos: 192
Respuesta: cambiar fondo con jquery cada x segundos

Podrías hacer algo así:

Código HTML:
Ver original
  1. <!DOCTYPE html>
  2. <meta charset="utf-8" />
  3. <title>Cambio de fondo</title>
  4. <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
  5. <script src="fondo_imagenes.js" type="text/javascript"></script>
  6. <link rel="stylesheet" href="estilos.css" />
  7.  
  8. </head>
  9.     <div id="fondo-imagenes">
  10.         <img src="http://placekitten.com/1200/800" />
  11.         <img src="http://placebear.com/1200/800" />
  12.         <img src="http://placedog.com/1200/800" />
  13.     </div>
  14.     <div id="wrap-contenido">
  15.         <!-- contenido de ejemplo -->
  16.         <h1>Mi p&aacute;gina</h1>
  17.         <p>Lorem ipsum dolor sit amet, ephesiorum quod non dum veniens indica enim materiam ad quia. Testare in modo invenit iuvenem patre nihil labore in lucem concitaverunt in. Famulus prope sola habiturus in modo invenit. Neminem habere matrem vel regio hinc Agimus nolo accipies, nescimus de me missam canticis in rei finibus veteres hoc. Africus hortamento laetus moritur ad nomine Stranguillio in, x domum sum ad te sed quod eam est cum!</p>
  18.         <p>Lorem ipsum dolor sit amet, ephesiorum quod non dum veniens indica enim materiam ad quia. Testare in modo invenit iuvenem patre nihil labore in lucem concitaverunt in. Famulus prope sola habiturus in modo invenit. Neminem habere matrem vel regio hinc Agimus nolo accipies, nescimus de me missam canticis in rei finibus veteres hoc. Africus hortamento laetus moritur ad nomine Stranguillio in, x domum sum ad te sed quod eam est cum!</p>
  19.         <p>Lorem ipsum dolor sit amet, ephesiorum quod non dum veniens indica enim materiam ad quia. Testare in modo invenit iuvenem patre nihil labore in lucem concitaverunt in. Famulus prope sola habiturus in modo invenit. Neminem habere matrem vel regio hinc Agimus nolo accipies, nescimus de me missam canticis in rei finibus veteres hoc. Africus hortamento laetus moritur ad nomine Stranguillio in, x domum sum ad te sed quod eam est cum!</p>
  20.         <!-- contenido de ejemplo -->
  21.     </div>
  22. </body>
  23. </html>

Código CSS:
Ver original
  1. body, html{
  2.     /* pequeño reset, ignorar */
  3.     margin:0;
  4.     padding:0;
  5. }
  6.  
  7. /* Posicionamiento de los elementos */
  8. #fondo-imagenes, #fondo-imagenes img{
  9.     position: absolute;
  10.     left:0;
  11.     top: 0;
  12.     width: 100%;
  13.     z-index: 1; /* posicionar debajo del contenido */
  14. }
  15.  
  16. /* posicionamiento del contenido */
  17. #wrap-contenido{
  18.     /* IMPORTANTE, posicionar encima de las imagenes */
  19.         position: relative;
  20.         z-index: 10;
  21.        
  22.     /* Ignorar, estilos de ejemplo */
  23.     width: 960px;
  24.     margin: 0 auto;
  25.     padding: 30px 20px;
  26.     background: rgba(0,0,0,0.6);
  27.     color: #eee;
  28.     border: 8px solid rgba(255,255,255,0.2);
  29.     border-top: 0;
  30.     -webkit-box-shadow: 0 0 10px rgba(0,0,0,0.3);
  31.     -moz-box-shadow: 0 0 10px rgba(0,0,0,0.3);
  32.     box-shadow: 0 0 10px rgba(0,0,0,0.3);
  33. }

Código Javascript:
Ver original
  1. $(window).load(function(){
  2.     // Lista de imagenes
  3.     var $_imagenes = $('#fondo-imagenes img');
  4.     var i_cantidad_img = $_imagenes.length;
  5.     var i_iniciar_en = 0;           //Indice de imagen en cual iniciar
  6.     var i_tiempo = 4000;            //Intervalo de tiempo
  7.     var i_duracion = 700;           //Duración de la animación
  8.     var s_animacion = 'fadeToggle'; //Animacion a usar
  9.     var s_claseactiva = 'img_activa' //Clase de la imagen activa
  10.    
  11.     // Oculto todas las imagenes inicialmente
  12.     $_imagenes.hide();
  13.    
  14.     // Muestro la primer imagen
  15.     $_imagenes.eq(i_iniciar_en)[s_animacion](i_duracion).addClass(s_claseactiva);
  16.    
  17.     // Muestro la primera
  18.     setInterval(function(){
  19.         i_iniciar_en = i_iniciar_en+1>=i_cantidad_img?0:i_iniciar_en+1;     //Incremento indice de imagen activa
  20.         $('.' + s_claseactiva)[s_animacion](i_duracion).removeClass(s_claseactiva); //Oculto imagen actualmente activa
  21.         $_imagenes.eq(i_iniciar_en)[s_animacion](i_duracion).addClass(s_claseactiva);   //Muestro siguiente imagen
  22.     },i_tiempo);
  23. });


Demo funcionando: http://jsbin.com/efosaw


Tené en cuenta que es sólo un demo que hice en unos minutos. Hay algunas cosas a considerar:
  • Las imagenes deberian tener un min-width igual al contenedor gneral, cosa que no se achiquen mucho al redimensionar la ventana debajo del ancho del contenedor del contenido.
  • Hay que solucionar mediante CSS el hecho que la imagen de fondo te estira la pantalla, siendo que no hay más contenido debajo. Esto se puede, hay que buscar y probar, no tengo ganas.
  • El HTML no es muy semántico, pues esas imágenes son puramente decorativas y no tienen nada que hacer ahí. Sería menos incorrecto insertar el contenedor de las imágenes con el mismo script, para que no esten en el HTML.
  • etc.

- Edit-

Por algún motivo el demo de JSBin se clava en la segunda imagen. No tira error ni nada... En fin, acá funciona bien:
http://dl.dropbox.com/u/48567662/sit...out/index.html
__________________
nahueljose.com.ar

Última edición por Naahuel; 16/05/2012 a las 21:52