Alguna vez me tocó mostrar por cada vez que se cargaba una página, una de entre varias posibles imágenes, para ello utilicé un simple script en PHP.
En CSS Globe publicaron también una solución similar que según el autor, usó en un sitio estático, en este ejemplo usan sólo CSS y Javascript. Estuve viendo el código y decidí explicarlo porque creo que son de esos snippets que uno guarda porque sabe que tarde o temprano lo va a utilizar.
Para este ejemplo vamos o mostrar un texto de entre 4 posibles cada vez que se cargue la página (similar a los mensajes que muestra Adsense).
Implementación
Primero creamos el HTML que contendrá una lista en donde cada ítem es una de las frases a mostrar:
<ul id="tips"> <li>... if you want to become a better coder you need to eat your vegetables?</li> <li>... it takes more time to code a web page then to make a pizza?</li> <li>... you should validate your code?</li> <li>... jQuery is your friend? For real!</li> </ul>
Como ven el contenedor del contenido a mostrar es una simple lista HTML.
La idea es esconder todos los elementos con CSS, seleccionar uno y mostrarlo sólo uno con Javascript.
La CSS que vamos a usar es la siguiente:
#tips, #tips li{ margin:0; padding:0; list-style:none; } #tips{ width:250px; font-size:16px; line-height:120%; } #tips li{ padding:20px; background:#e1e1e1; display:none; /* hide the items at first only */ }
Luego enlazamos la bilioteca jQuery en la sección HEADER:
<script type="text/javascript" src="js/jquery.js"></script>
Y también agregamos el siguiente script que define el comportamiento necesario para mostrar aleatoriamente un ítem:
<script type="text/javascript"> this.randomtip = function(){ var length = $("#tips li").length; var ran = Math.floor(Math.random()*length) + 1; $("#tips li:nth-child(" + ran + ")").show(); }; $(document).ready(function(){ randomtip(); }); </script>
Alternativamente podemos hacer rotar aleatoriamente el contenido tras un intervalo de tiempo definido con el script:
<script type="text/javascript"> this.randomtip = function(){ var pause = 3000; // define the pause for each tip (in milliseconds) var length = $("#tips li").length; var temp = -1; this.getRan = function(){ // get the random number var ran = Math.floor(Math.random()*length) + 1; return ran; }; this.show = function(){ var ran = getRan(); // to avoid repeating while (ran == temp){ ran = getRan(); }; temp = ran; $("#tips li").hide(); $("#tips li:nth-child(" + ran + ")").fadeIn("fast"); }; show(); setInterval(show,pause); }; $(document).ready(function(){ randomtip(); }); </script>
Lo que me gusta de este ejemplo es que es muy útil, simple y además ofrece una primera aproximación al usar jQuery.
Simple Way to Random Display or Rotate Content Using JavaScript and CSS
Sitio: cssglobe.com/post/6023/simple-way-to-random-display-or-rotate-content-using