Lazy Load lädt keine sichtbaren Bilder

7

Ich versuche, mit lazyload nur Bilder zu laden, die sichtbar sind (weil meine Website reaktionsfähig ist und einige Inhalte mit display: none für Clients auf einem kleineren Bildschirm ausgeblendet sind).

Grundsätzlich funktioniert Lazyload, aber NUR, nachdem ich die Seite ein wenig gescrollt habe.

Dies sind die Lazy-Load-Einstellungen, die ich verwende, und selbst nachdem der Schwellenwert auf 2000px (mehr als die gesamte Seitenhöhe) eingestellt wurde, werden nur Bilder geladen, nachdem der Benutzer die Seite gescrollt hat (sogar 1 px). Dieser Fehler tritt nur in Webkit-Browsern auf.

%Vor%     
andy 10.07.2012, 18:25
quelle

13 Antworten

12

Ich denke, es könnte ein Fehlverhalten des threshold -Parameters sein, aber dennoch können Sie die Ladevorgänge manuell auslösen gemäß diese Seite :

%Vor%

Aber wenn Sie alle Bilder auf ready laden wollen, warum brauchen Sie überhaupt Lazyload? Sie könnten einfach $.animate verwenden.

    
pozs 10.07.2012, 18:58
quelle
4

Fügen Sie das einfach nach .lazyload () hinzu und es wird scrollen und Bilder anzeigen

%Vor%     
Nemke 16.01.2013 11:21
quelle
3

Sie müssen Breite und Höhe für Ihre Bilder festlegen.

Wenn width und height nicht gesetzt sind, meldet jQuery Bilder, die in den Webkit-Browsern beim Ereignis document.load nicht sichtbar sind. Wenn skip_invisible ist true Lazy Load ignoriert die Bilder, dh es wird nicht versucht herauszufinden, ob das Bild geladen werden soll oder nicht. Sie laden das erste Mal, wenn Sie scrollen.

Wenn Sie skip_invisible setzen, wird false plugin versuchen herauszufinden, ob Bilder geladen werden sollen. Da Sie jedoch keine Breite und Höhe haben, werden alle Bilder die Größe 0x0 oder 1x1 haben. Aus diesem Grund sind alle Bilder im Ansichtsfenster (wegen ihrer Größe), wenn das Plugin startet. Da Bilder im Ansichtsfenster sind, wird Lazy Load anweisen, sie alle zu laden.

Kurz gesagt: Fügen Sie Bildern Breite und Höhe hinzu. Lazy Load funktioniert ohne sie nicht richtig.

    
Mika Tuupola 17.01.2013 09:38
quelle
2

Ich bin mir nicht sicher, wann das hinzugefügt wurde, aber Sie können das "Erscheinen" -Ereignis manuell auf einige oder alle (je nach CSS-Selektor) erscheinen lassen:

%Vor%

Habe ich von hier: Ссылка

    
Al Sweigart 04.12.2014 07:24
quelle
1

Ich hatte das gleiche Problem. Sie befinden sich in einem Scroll-Div, würden aber nur nach einem ersten Scroll geladen werden.

Wenn Sie "Erscheinen" verwenden, werden alle angezeigt, es sei denn, Sie beschränken es. In meinem Fall wollte ich nur die ersten 3 beim Laden zeigen. Der Rest von ihnen faul wie immer.

%Vor%     
Skäggiga Mannen 12.12.2016 14:53
quelle
0

Versuchen Sie, zusätzliche Parameter zu übergeben.

skip_invisible: falsch

Dieser Parameter ist standardmäßig wahr, daher scheinen Ihre Bilder nicht sichtbar zu sein, wenn das Plugin seinen Job startet. Dies kann passieren, wenn Sie einen Preloader auf Ihrer Website verwenden.

    
Rantiev 12.09.2012 17:36
quelle
0

Ich hatte das gleiche Problem und habe eine Lösung dafür gefunden. Bitte beachten Sie, dass meine Bilder in einem div platziert wurden, das über einen Ajax-Anruf aufgefüllt wurde.

Ändern Sie einfach eine Codezeile innerhalb der Lazyload-Quellen (Zeilen 147-150) der Version 1.8.4:

%Vor%

statt

%Vor%

Oder fügen Sie den Aufruf von "update ()" eventuell einem anderen erforderlichen Ereignis hinzu.

    
Gabriele Pala 15.05.2013 13:55
quelle
0

Ich hatte ein ähnliches Problem, bei dem die Bilder nach einem Ajax-Aufruf nicht geladen wurden, bis ich scrollte (selbst wenn ich nur 1px scrollte, würde es laden). Ich fand, dass ich meinen Bildern eine Höhe und Breite hinzufügen musste, wie Mika Tuupola sagte. Meine Bilder wurden dynamisch geladen, hatten unterschiedliche Bildgrößen und wurden aus einer foreach-Schleife geladen. Ich fügte dem Image-Tag ein generisches width- und height-Attribut hinzu, und nachdem das lazyload das Bild geladen hat, habe ich die Attribute entfernt, sodass die korrekte Bildgröße angezeigt wird.

%Vor%     
Allan 06.09.2013 01:59
quelle
0

Ich hatte das gleiche Problem mit versteckten Elementen, ist ein einfacher Workaround, aber es funktioniert. Wenn ich auf die Seite klicke, löst ich ein Scroll-Ereignis aus, um das Lazyload-Skript zu erzwingen. Sie können das Gleiche mit der Ereignis-Größenänderung tun

%Vor%     
Alessandro Romeo 22.02.2015 19:10
quelle
0

Kurz gesagt: Fügen Sie Bildern Breite und Höhe hinzu. Lazy Load funktioniert ohne sie nicht richtig.

Sie sollten im Voraus Platzhalter geladen werden, so:

%Vor%

Und dann

%Vor%

Wenn Sie die Breite des Bildes auf 100% einstellen, erhalten Sie eine Breite und Höhe. Das hat mein Problem gelöst.

    
Deot 25.06.2016 07:34
quelle
0

Dies ist funktionierende Lösung, aber aus irgendeinem Grund ist es nicht sehr gut:

%Vor%

Jedes Mal, wenn das Lazyload Plugin das Bild lädt, wird diese Funktion aufgerufen und der Fenstertrigger 'scroll' wird emuliert, also ist es eine Lösung für mich

    
AlexxKur 20.01.2017 17:30
quelle
0

Erhöhen Sie failure_limit .

Nach dem Scrollen von Seitenplugin Loops obwohl entladene Bilder. Loop prüft, ob das Bild sichtbar ist. Standardmäßig wird die Schleife angehalten, wenn das erste Bild außerhalb des Ansichtsfensters gefunden wird. Dies basiert auf folgender Annahme. Die Reihenfolge der Bilder auf der Seite entspricht der Reihenfolge der Bilder im HTML-Code. Bei einigen Layouts kann dies falsch sein.

Wenn fail_limit auf 10 gesetzt wird, stoppt das Plugin die Suche nach Bildern, die geladen werden sollen, nachdem 10 Bilder unterhalb der Falte gefunden wurden.

    
user3424426 23.08.2017 12:25
quelle
-1

Ich habe mich mit dem gleichen Problem beschäftigt und festgestellt, dass dieses Problem nur dann auftritt, wenn Bilder in einem div platziert werden, das anfangs verborgen ist (dh display: none;)

    
Omid 09.08.2012 12:03
quelle