2009-06-18 24 views
6

Tengo un contenedor con muchas imágenes pequeñas.jQuery randomly fadeIn images

<div id="container"> 
    <img src="1.jpg" /> 
    <img src="2.jpg" /> 
    <img src="3.jpg" /> 
    ... 
    <img src="100.jpg" /> 
</div> 

puse opacidad a 0. (no ocultando) Entonces quiero mostrar (fadeIn) Imagen aleatoria después de medio segundo. por ejemplo, quinto, primero, 55 ...

Cualquier sugerencia, Un montón de gracias

Respuesta

4

probar esto

<script type="text/javascript"> 

//generate random number 
var randomnumber=Math.floor(Math.random()*$("#container").children().length); 
$(function() { 
    //hide all the images (if not already done) 
    $("#container > img").hide(); 

    //set timeout for image to appear (set at 500ms) 
    setTimeout(function(){ 
     //fade in the random index of the image collection 
     $("#container > img:eq(" + randomnumber + ")").fadeIn(); 
    }, 500);  
}); 
</script> 
+1

¿Cómo puedes estar seguro de que 1) todos los números finalmente se mostrará (visible), y 2) saber que todos se muestra y deja de intentar mostrarlos? – menardmam

+0

Puede crear una matriz de opciones y comparar su número aleatorio con eso, una vez que se haya utilizado, lo eliminará de la matriz. – Josh

+0

'randomnumber' se calcula una sola vez, ¿verdad? – Raptor

1

poner un identificador a cada imagen, con un patrón de números, y luego se desvanecen una imagen con un identificador generado al azar, usando las matemáticas. azar de JavaScript

function getImage(minim,maxim) { 
    return "img" + Math.round(Math.random()*(maxim-minim)+minim); 
} 
1

no está claro (para mí) si desea iniciar la decoloración después de medio segundo, o se desvanecen en la mitad de un segundo. Sin embargo, ir con fade en después de medio segundo. Si quieres hacerlo de otra forma, simplemente ignorar las cosas con setTimeout()

La visión general de lo que quiere hacer es:
crear una función cuando se haya cargado la página que se llama después de medio segundo (setTimeout)
Esa función debe generar un número aleatorio, con el mínimo como 0, y el máximo como el número de hijos del elemento #container menos 1
Fundir el elemento secundario del #container con el índice proporcionado por el número aleatorio.

código Pusdo (Hace mucho tiempo que no he hecho nada con jQuery. O Javascript para esa materia)

function onDocumentReady(){ 
    setTimeout(500, "fadeInRandom()"); 
} 

function fadeInRandom(){  
    var numElements = $("#container").children().length; 
    var randomElem = Math.random() * (numElements-1); 
    $("#container").children()[randomElem].fadeIn(); 
} 
0

me gustaría utilizar el número aleatorio generado a crear el atributo 'src' de la imagen y construir el selector jQuery en consecuencia:

setInterval (showRandomImage, 500); 

function showRandomImage() 
{ 
    var randNo = Math.floor(Math.random() * 101); 
    $("#container > img[src=" + randNo + "'.jpg']") 
        .animate({opacity: 0}, 500).fadeIn('slow'); 
} 
1

Si desea fundir- en cambio, en todas las imágenes, no es necesario usar todas las cosas al azar, solo hacer un ciclo y demorar un número aleatorio entre 500 ms y 1 segundo. Tienes que poner la función hide de todos modos. O con opacidad usa css animado.

$('#container img').each(function(index) { 

    $(this).delay(Math.random()*500+500).fadeIn(); 

}); 

que no encontrará nada más simple que eso, y con el mismo efecto

+0

Parece la solución más simple y funciona perfectamente. – Juggernaut