Tôi đã nghĩ ra phương pháp cơ bản của riêng mình mà dường như hoạt động tốt (cho đến nay). Có thể có hàng tá điều mà một số địa chỉ script phổ biến mà tôi chưa nghĩ ra.
Lưu ý - Giải pháp này nhanh và dễ thực hiện nhưng tất nhiên là không hiệu quả. Chắc chắn hãy xem xét Intersection Observer mới như Apoorv đã đề cập và được giải thích bởi developer.google nếu hiệu suất là một vấn đề.
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');
}
})
})
Mã html mẫu
<div>
<img src="" data-src="pathtoyour/image1.jpg">
<img src="" data-src="pathtoyour/image2.jpg">
<img src="" data-src="pathtoyour/image3.jpg">
</div>
Giải thích
Khi cuộn trang, mỗi hình ảnh trên trang sẽ được chọn ..
$(this).attr('data-src')
- nếu hình ảnh có thuộc tính data-src
và những hình ảnh đó cách cuối cửa sổ bao xa ..
$(this).offset().top < ($(window).scrollTop() + $(window).height() + 100)
điều chỉnh + 100 thành bất kỳ thứ gì bạn thích (- 100 chẳng hạn)
var source = $(this).data('src');
- nhận giá trị của data-src=
aka url hình ảnh
$(this).attr('src', source);
- đặt giá trị đó vào src=
$(this).removeAttr('data-src');
- loại bỏ thuộc tính data-src (để trình duyệt của bạn không lãng phí tài nguyên với những hình ảnh đã được tải)
Thêm vào mã hiện có
Để chuyển đổi html của bạn, trong một trình soạn thảo, chỉ cần tìm kiếm và thay thế src="
bằngsrc="" data-src="