Я придумал свой собственный базовый метод, который, кажется, работает нормально (пока). Есть, наверное, дюжина вещей, которые затрагивают некоторые популярные скрипты, о которых я не подумал.
Примечание. Это решение быстро и легко реализовать, но, конечно, не очень хорошо для производительности. Обязательно посмотрите на новый Intersection Observer, упомянутый Апурвом и объясненный разработчиками 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="