Я придумал свой собственный базовый метод, который, кажется, работает нормально (пока).Вероятно, есть несколько вещей, о которых говорят некоторые популярные сценарии, о которых я даже не задумывался.
Примечание - Это решение быстрое и простое в реализации, но, конечно, не очень хорошее для производительности.Обязательно посмотрите новый Intersection Observer , как указано Apoorv и объяснено developers.google , если производительность является проблемой.
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');
}
})
})
Пример html-кода
<div>
<img src="" data-src="pathtoyour/image1.jpg">
<img src="" data-src="pathtoyour/image2.jpg">
<img src="" data-src="pathtoyour/image3.jpg">
</div>
Объяснено
При прокрутке страницы каждое изображение на странице отображаетсяпроверил ..
$(this).attr('data-src')
- если изображение имеет атрибут data-src
и как далеко эти изображения находятся от нижней части окна ..
$(this).offset().top < ($(window).scrollTop() + $(window).height() + 100)
отрегулируйте + 100 по своему усмотрению (например, - 100)
var source = $(this).data('src');
- получает значение data-src=
, то есть URL-адрес изображения
$(this).attr('src', source);
- помещает это значение в src=
$(this).removeAttr('data-src');
- удаляет атрибут data-src (поэтому ваш браузер не тратит ресурсы, путаясь с уже загруженными изображениями)
Добавление к существующему коду
Чтобы преобразовать ваш HTML, в редакторе просто найдите и замените src="
на src="" data-src="