Я придумав свій власний базовий метод, який, здається, добре працює (поки що). Є, мабуть, десяток речей, які стосуються деяких популярних сценаріїв, про які я не думав.
Примітка - Це рішення є швидким та простим у впровадженні, але, звичайно, не дуже ефективним. Безумовно , вивчіть новий 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=
aka url зображення
$(this).attr('src', source);
- вкладає це значення в src=
$(this).removeAttr('data-src');
- видаляє атрибут data-src (щоб ваш браузер не витрачав ресурси, возиться з уже завантаженими зображеннями)
Додавання до існуючого коду
Щоб перетворити ваш html, у редакторі просто знайдіть і замініть src="
наsrc="" data-src="