Imagen de cabecera aleatoria

Escrito por Juanjo el Saturday, 10 de January del 2009 a las 10:43 pm

Como comenté en el post anterior, he añadido al blog un cambio que me agrada bastante: la de poder cargar una imagen aleatoria al entrar en la página. Bastante fácil todo, excepto por un detalle: como el theme que utilizo define la propiedad de la imagen en el CSS (background-image:url(ruta-imagen)), la generación de la alatoriedad no sabía cómo llevarla a cabo exactamente, hasta que descubrí que jQuery permite la modificación de atributos de las hojas de estilo (enlace). jQuery es una librería de funciones JavaScript que, básicamente, hace mil virguerías. Recomiendo pasarse por la página y echarle un vistazo. Pues bien, al final el código quedó tal que así:

En la cabecera, añadimos la librería:

<script src="http://www.jjcoellov.es/scripts/jquery.js" 
   type="text/javascript"></script>

Y luego en el cuerpo agregamos este código:

   <script type="text/javascript">
   /* Cambiar la imagen de la cabecera aleatoriamente */ 
 
  /* Calcular un valor aleatorio entre 0 y el tamaño del array 
   *  pasado por parametro */
   function randomPos(a) {
      return Math.floor((Math.random() * a.length) % a.length);
   }
 
   /* Array con las rutas de las imágenes a utilizar */
   var rutasImg = [ "/imagenes/cabecera1.jpg", 
                    "/imagenes/cabecera2.jpg",
                    "/imagenes/cabecera3.jpg",];
 
   /* Hacemos uso de jQuery para modificar (o asignar) el valor 
    *  del atributo "background-image" al elemento 
    *  con id "cabecera"  */
   $(document).ready(function() { 
      var imagen = "url(" + rutasImg[randomPos(rutasImg)] + ")";
      $("#cabecera").css("background-image", imagen);
   });
 
   </script>

Y eso es todo. Podría ser mucho más sofisticado: obtener todas las imagenes de un directorio especificado (aunque necesitaría algún lenguaje del lado del servidor para llevarlo a cabo), o generalizarlo para que obtenga una imagen aleatoria en cualquier elemento, simplemente ubicando el código dentro del mismo. Tambiés puede resultar innecesario añadir jQuery para hacer esta nimiedad, pero como resulta bastante sencillo utilizarlo decidí incluirlo. Es muy probable que haya métodos alternativos haciendo uso de funciones nativas de javascript, pero como primera aproximación creo que es adecuado. Si alguien busca algo similar, espero que le sirva de ayuda.

Categoria: Coding

No hay comentarios
Escribir un comentario

XHTML: Puedes usar estos tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">

Comentarios Recientes
  • alexis perez: Pero no hay que ser un ingeniero para darse cuenta que por ejemplo en la pregunta 1, reclama o lanza...
  • débora: te eché de menos :-(
  • egeo87: LOS INDIANOS, EMPIEZA LA CUENTRA ATRAS! http://www.lapalma.es/post/201 0-01-16-los-indianos-empiez...
  • Roger: Gracias, nos veremos, soy este chico en ropas blancas y un sombrero :-)
  • Roger: Ustedes ya saben que dia sera Los Indianos este ano?
  • Sergio: Mamonazo!! como es posible que si busco en google “los indianos 2010″ tú blog sea el 2º...
  • Jose Frechín: Hace poco estuve tentado de usarlo, pero claro, soy un vago y eso de bajarme los archivos y luego...
  • Óscar: Juanjo eres un grande tio!!! de mayor (cuando acabe la técnica) quiero ser como tú
  • Juanma: Sip, se podría decir que sip !!!!
  • Juanma: En cuanto pases por esta situación seguro que no te hace la misma gracia :p .. Saludos !!


All's clear