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.

Escribir comentario

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
  • Jagoba: Muy bueno y completito, a favoritos jajaja. Me queda aprenderlos, con el uso… Saludos!
  • Leticia: Buenos dias Estoy intentando buscar barco para poder ir a Los Indianos este año y dicen que no hay plazas,...
  • Programador web Cádiz: Parece un poco inconforme de que el mundo rueda alrededor de Google…pero la idea es...
  • Fernando: Que pocas ganas de colaborar, este tipo de información es muy útil para muchísima gente. Que pena que la...
  • Danielfcc: Alguien sabe como activar el agrupamiento de parrafos era +/- de esta forma.. + function1 - function2...
  • Pablo: Algo que me pareció bueno es lo de poder configurar tus propios atajos, yo particularmente me configuré...
  • Pablo: Excelente post, pagina de inicio para google chrome! =)
  • informatico: Gran trabajo….me gustaria saber más sobre ello…para cuando la siguiente entrada??? gracias.
  • Churry: Esta entrada ya se publico?? “En el próximo artículo veremos cómo hacer uso de los componentes...
  • Gregorio: Qué cabrones, lo tuvieron que pasar genial. Iré solicitando el acceso al comando a ver si para el próximo...


All's clear