<img data-src="https://pic.imgdb.cn/item/614ed1642ab3f51d91a0da60.jpg" >
<img data-src="https://pic.imgdb.cn/item/6184d50c2ab3f51d910e3c4f.jpg" >
<img data-src="https://pic.imgdb.cn/item/6184d41a2ab3f51d910cee6f.jpg" >
<img data-src="https://pic.imgdb.cn/item/6167be3f2ab3f51d91d719a5.png" >
<img data-src="https://pic.imgdb.cn/item/615eb6222ab3f51d91dea117.jpg" >
let num = document.getElementsByTagName('img').length
let img = document.getElementsByTagName('img')
let n = 0
let isLoading = false
let _clientHeight = document.documentElement.clientHeight
let _scrollTop = document.documentElement.scrollTop || document.body.scrollTop
function computedClientHeight () {
_clientHeight = document.documentElement.clientHeight
}
lazyLoad()
function lazyLoad() {
isLoading = n >= num
_scrollTop = document.documentElement.scrollTop || document.body.scrollTop
for (var i = n; i < num; i++) {
if (img[i].offsetTop < (_scrollTop + _clientHeight)) {
img[i].setAttribute('src', img[i].getAttribute('data-src'))
n = i + 1
}
}
}
function throttle (func, delay, flag) {
let timerOut
return function () {
if (flag) return
if (!timerOut) {
timerOut = setTimeout(function () {
timerOut = null
func()
}, delay)
}
}
}
function debounce (callback, delay) {
let timer
return function (arg) {
clearTimeout(timer)
timer = setTimeout(function () {
callback(arg)
}, delay)
}
}
window.addEventListener('scroll', throttle(lazyLoad, 100, isLoading))
window.addEventListener('resize', debounce(computedClientHeight, 800))