I am creating a slideshow of animations using animated GIFs. I'm crossfading from one animation to the next. The problem is: the only way I have discovered to ensure that the GIF starts animating from the first frame is to reload it each time it's shown. The GIFs are 200KB or so each, which is way too much bandwidth for a continuous slideshow.
Here's my current code. img
and nextimg
are <div>
tags containing a single <img>
each. nextimg_img
is the <img>
tag corresponding to the next image to be displayed.
var tmp = nextimg_img.attr('src');
nextimg_img.attr('src', '');
setTimeout(function() { nextimg_img.attr('src', tmp); }, 0);
img.fadeOut('slow');
nextimg.fadeIn('slow');
The idea is that it sets the src
attribute of the next image to ''
, then sets it back to the source of the GIF to be displayed.
This works — it restarts the animation from the beginning — but the GIFs seem to be redownloaded every time they are displayed.
EDIT: it's a looping slideshow, and I'm trying to avoid reloading the GIFs from the net when they get shown the second/third/subsequent time.
0
to repeat "indefinitely". You can do this with an online tool like ezGIF.com (upload the gif and then click "frames" to change the "loop" value to0
). If that's not the issue, I also added an answer below on how to restart a gif with JS. – ashleedawg