Ich habe mir meine eigene grundlegende Methode ausgedacht, die (bisher) gut zu funktionieren scheint. Es gibt wahrscheinlich ein Dutzend Dinge, die einige der populären Skripte ansprechen, an die ich nicht gedacht habe.
Hinweis - Diese Lösung ist schnell und einfach zu implementieren, aber natürlich nicht besonders leistungsfähig. Schauen Sie sich auf jeden Fall den neuen Intersection Observer an, wie von Apoorv erwähnt und von developer.google erklärt , wenn die Leistung ein Problem darstellt.
Die JQuery
$(window).scroll(function() {
$.each($('img'), function() {
if ( $(this).attr('data-src') && $(this).offset().top < ($(window).scrollTop() + $(window).height() + 100) ) {
var source = $(this).data('src');
$(this).attr('src', source);
$(this).removeAttr('data-src');
}
})
})
Beispiel-HTML-Code
<div>
<img src="" data-src="pathtoyour/image1.jpg">
<img src="" data-src="pathtoyour/image2.jpg">
<img src="" data-src="pathtoyour/image3.jpg">
</div>
Erklärt
Wenn die Seite gescrollt wird, wird jedes Bild auf der Seite überprüft.
$(this).attr('data-src')
- wenn das Bild das Attribut hat data-src
und wie weit diese Bilder vom unteren Rand des Fensters entfernt sind.
$(this).offset().top < ($(window).scrollTop() + $(window).height() + 100)
Stellen Sie die + 100 nach Ihren Wünschen ein (- 100 zum Beispiel)
var source = $(this).data('src');
- Erhält den Wert data-src=
der Bild-URL
$(this).attr('src', source);
- setzt diesen Wert in die src=
$(this).removeAttr('data-src');
- Entfernt das data-src-Attribut (damit Ihr Browser keine Ressourcen verschwendet, die mit den bereits geladenen Bildern herumspielen).
Hinzufügen zu vorhandenem Code
So konvertieren Sie Ihre html, in einem Editor nur Suchen und Ersetzen src="
mitsrc="" data-src="