Bilder werden beim Laden von Bildern mit jquery eingeblendet

8

Ich habe eine Seite voller Bilder und ich möchte, dass jede Seite beim Laden eingeblendet wird. Ich habe den folgenden Code, der funktioniert, aber scheint fehlerhaft, im Grunde manchmal nicht das ganze Bild verblassen.

Hat jemand Vorschläge, wie man das verbessert?

Danke

%Vor%     
James 09.11.2009, 13:03
quelle

11 Antworten

9
  

Manchmal verblassen nicht alle Bilder.

Ja, das ist normalerweise ein ziemlich grundlegendes Problem: Einige Bilder werden geladen, bevor Sie ihnen einen Load-Event-Handler zugewiesen haben. Dies ist besonders wahrscheinlich, wenn die Bilder zwischengespeichert werden.

Wenn die Bilder im HTML-Format vorliegen, ist leider nur ein (extrem hässliches) Inline-Onload-Attribut möglich:

%Vor%     
bobince 09.11.2009 13:39
quelle
7

Es ist möglich, dass das Ladeereignis nicht ausgelöst wird, wenn das Bild aus dem Browser-Cache geladen wird. Um diese Möglichkeit zu berücksichtigen, können wir den Wert der Eigenschaft .complete des Bildes testen.

%Vor%     
Fint 11.10.2012 15:01
quelle
4

Platzieren Sie diesen Code in den Abschnitt der Site:

%Vor%

Dies ist vielleicht nicht die eloquenteste Lösung, aber es macht den Job erledigt. Wenn Sie ein Beispiel dafür in Aktion sehen möchten, besuchen Sie diese Seite , für die ich sie verwendet habe.

    
Ted Rysz 27.02.2013 19:18
quelle
2

Sie können zuerst sicherstellen, dass Ihre Bilder standardmäßig ausgeblendet sind (so dass Ihre jQuery hide -Aufrufe nicht mehr benötigt werden) mit etwas CSS,

%Vor%

Und dann könnten Sie in Ihrem Dokument Folgendes versuchen. Ich gebe zu, dass es hier einige Redundanzen geben wird, in denen einige Bilder (hinter den Kulissen) versuchen, zweimal einzublenden, aber das Endergebnis wird genauso aussehen. Dies ist der Kompromiss, den ich zugeben werde, wenn ich versuche, eine einfache Antwort darauf zu geben.

Die Situation wird in Ihrem Dokument liegen.ready, einige Bilder haben geladen (besonders solche, die bereits zwischengespeichert wurden) und einige können noch ausstehen.

%Vor%

Da jQuery Ihre Animationseffekte "stapelt", sobald etwas vollständig eingeblendet ist, können Sie fadeIn erneut aufrufen, und nichts sollte (sichtbar) passieren.

Wenn dies inakzeptabel ist, könnten Sie wahrscheinlich eine komplexere Möglichkeit finden, zu überprüfen, welche Bilder eingeblendet wurden und welche nicht, bevor Sie das Load-Ereignis auf sie setzen.

Viel Glück!

    
Funka 09.11.2009 19:40
quelle
2

Ich habe das gerade in diesem Thread beantwortet: jQuery Wie erhalten Sie ein Bild, das beim Laden eingeblendet wird?

Funktioniert für mich!

    
user607972 08.02.2011 11:37
quelle
0

rufen Sie diese Funktion im Document.ready auf?

%Vor%

Ссылка

    
LiamB 09.11.2009 13:05
quelle
0

Ich habe mich kürzlich mit diesem Durcheinander befasst. Ich habe diese ähnliche Frage beantwortet, aber es ist nicht genau das, was Sie fragen ...

Holen Sie sich das echte Breite und Höhe eines Bildes mit JavaScript? (in Safari / Chrome)

    
Nosredna 09.11.2009 19:43
quelle
0

fügen Sie Ihren Code in diese Funktion ein. Wenn Sie $ (Dokument) verwenden, funktioniert es, sobald das dom geladen ist. Wenn Sie den Körper verwenden, wird er gestartet, sobald der Körper vollständig geladen ist. Auf diese Weise werden Ihre Bilder immer eingeblendet, nachdem der Körper geladen wurde.

%Vor%     
justin 02.12.2010 20:10
quelle
0

Um mit gecachten Bildern umzugehen, funktioniert die Lösung von Bobince, aber wie er sagte, ist es ziemlich hässlich.

Eine andere Lösung wäre, Ihre Bilder in CSS zu verstecken und das folgende Javascript zu verwenden:

%Vor%

Auf diese Weise werden die meisten Bilder korrekt geladen, und wenn sie zwischengespeichert und sofort ausgeblendet wurden (die Ladefunktion hat keine Zeit zum Abfeuern), werden sie durch das Ladeereignis der Seite angezeigt. Das Ladeereignis der Seite stellt sicher, dass alles geladen wurde.

    
Guillaume Flandre 17.12.2011 16:20
quelle
0

Ich benutze das coole Skript von David DeSandro, um zu überprüfen, ob Bilder geladen sind. (zB kann man eine Funktion schreiben, die den geladenen Bildern eine Klasse hinzufügt, so dass sie mit dem CSS-Übergang eingeblendet werden. check it out:
Ссылка

    
Fint 16.09.2013 16:47
quelle
0

Du könntest alle Bilder nehmen und sie in ein Bild einfügen und das einblenden, aber dann kommen alle zur selben Zeit herein und es wird eine große Datei sein. Es hängt davon ab, wofür Sie es verwenden möchten.

    
user5626618 24.12.2015 09:21
quelle

Tags und Links