代码思路
- 页面滚动时加载图片
- 判断页面窗口+页面滚动距离是否大于图片距顶部的距离,大于则加载。
- 通过创建实例预加载图片,加载完成后赋到图片上。
<div>
<img src="images/loading.gif" data-src="images/1.jpg">
</div>
<div>
<img src="images/loading.gif" data-src="images/2.jpg">
</div>
<div>
<img src="images/loading.gif" data-src="images/3.jpg">
</div>
window.onload = function () {
var imgs = document.querySelectorAll('img');
lazyload(imgs)
window.onscroll = function () {
lazyload(imgs)
}
function lazyload(imgs) {
var h = window.innerHeight;
var t = document.documentElement.scrollTop || document.body.scrollTop;
for (var i = 0; i < imgs.length; i++) {
if ((h + t) > getTop(imgs[i])) {
(function (i) {
var tmp = new Image();
tmp.src = imgs[i].getAttribute("data-src");
tmp.onload = function () {
imgs[i].src = imgs[i].getAttribute("data-src")
}
})(i)
}
}
}
function getTop(img) {
var t = img.offsetTop;
while (img = img.offsetParent) {
t += img.offsetTop;
}
return t;
}
}