Ich erstelle eine Slideshow von Animationen mit animierten GIFs. Ich überblinde von einer Animation zur nächsten. Das Problem ist: Die einzige Möglichkeit, die GIF-Animation vom ersten Frame an zu animieren, besteht darin, sie jedes Mal neu zu laden, wenn sie angezeigt wird. Die GIFs sind jeweils 200 KB oder mehr, was viel zu viel Bandbreite für eine kontinuierliche Diashow ist.Starten Sie ein animiertes GIF von JavaScript, ohne das Bild neu zu laden
Hier ist mein aktueller Code. img
und nextimg
sind <div>
Tags, die jeweils ein einzelnes enthalten. nextimg_img
ist der Tag , der dem nächsten Bild entspricht, das angezeigt werden soll.
var tmp = nextimg_img.attr('src');
nextimg_img.attr('src', '');
setTimeout(function() { nextimg_img.attr('src', tmp); }, 0);
img.fadeOut('slow');
nextimg.fadeIn('slow');
Die Idee ist, dass es das src
Attribut des nächsten Bildes auf ''
setzt, setzt sie dann zurück an die Quelle des GIF angezeigt werden.
Dies funktioniert — Es startet die Animation von Anfang an —, aber die GIFs scheinen jedes Mal neu heruntergeladen werden, wenn sie angezeigt werden.
EDIT: Es ist eine Looping-Diashow, und ich versuche zu vermeiden, die GIFs aus dem Netz neu zu laden, wenn sie das zweite/dritte/nachfolgende Mal gezeigt werden.
Startet die GIF-Animation von Anfang an? – nornagon
Ich sehe nicht, warum es nicht würde. Da ich mir vorstelle, dass die Animation erst dann startet, wenn sie auf dem Bildschirm angezeigt wird. Aber ich habe es ehrlich gesagt noch nicht probiert, also kann ich nicht mit hundertprozentiger Sicherheit sagen. – spinon
Ah, du hast recht - mir fehlt ein Detail. Es ist eine Looping-Diashow. Wenn also die GIFs wieder kommen, sind sie in der Mitte ihrer Animation, wenn ich sie nicht neu lade. – nornagon