Wymyśliłem własną podstawową metodę, która wydaje się działać dobrze (na razie). Prawdopodobnie jest tuzin rzeczy, o których nie pomyślałem w niektórych popularnych skryptach.
Uwaga - to rozwiązanie jest szybkie i łatwe do wdrożenia, ale oczywiście nie jest świetne pod względem wydajności. Zdecydowanie spójrz na nowy Intersection Observer, o którym wspomniał Apoorv i wyjaśniony przez developers.google, jeśli wydajność jest problemem.
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');
}
})
})
Przykładowy kod html
<div>
<img src="" data-src="pathtoyour/image1.jpg">
<img src="" data-src="pathtoyour/image2.jpg">
<img src="" data-src="pathtoyour/image3.jpg">
</div>
Wyjaśnione
Kiedy strona jest przewijana, każdy obraz na stronie jest sprawdzany.
$(this).attr('data-src')
- jeśli obraz ma atrybut data-src
i jak daleko te obrazy są od dołu okna.
$(this).offset().top < ($(window).scrollTop() + $(window).height() + 100)
dostosuj + 100 do tego, co lubisz (na przykład - 100)
var source = $(this).data('src');
- pobiera wartość data-src=
aka adresu URL obrazu
$(this).attr('src', source);
- umieszcza tę wartość w src=
$(this).removeAttr('data-src');
- usuwa atrybut data-src (aby Twoja przeglądarka nie marnowała zasobów na obrazy, które zostały już załadowane)
Dodawanie do istniejącego kodu
Aby przekonwertować HTML w edytorze wystarczy wyszukać i zamienić src="
zsrc="" data-src="