这个是以前学习写的,最近正好要用到懒加载,现在简单的复习复习。
记得没错的话是学习了这篇文章后
https://www.jianshu.com/p/cea62b6868ce
来看看这个demo长什么样
先来分析一波,看图片
HTML代码就不贴出来了,直接看js代码,后面有地址可以下载。
1.监听滑动事件
var lazyLoad={};
var isblock = true;//初始可见块为可见
var timer=1;//加载计数
var $block;//可见块
window.lazyLoad=lazyLoad;//暴露对象
//监听滑动
$("body").on('scroll',function(){
//如果不可见
if(!isblock){
return
}
//判断可见块是否可见
if(lazyLoad.isVisible($block)){
lazyLoad.init($block)//开始加载
}
});
2.判断目标块是否进入人们视野
//是否可见
lazyLoad.isVisible=function($element){
var winHight = $(window).height(),//屏幕高度
distanceTop = $element.offset().top;//可见块与距离顶部
//判断元素是否进入视野
if(distanceTop <= winHight){
console.log("开始加载");
return true
}else{
return false
}
}
3.开始加载
lazyLoad.init=function(input){
$block=input;
//获取数据
lazyLoad.getdata(function(datalist){
isblock=true;
//遍历数据
$.each(datalist,function(index,history){
// 拿到的数据进行拼接
var $node = lazyLoad.addNode(history)
$('.history-container').append($node)
});
});
$block.css("visibility","visible");
isblock=false;
};
4.ajax请求
lazyLoad.getdata=function(callback){
$.ajax({
url:"http://yyyxuan.cn/lay-eggs/js/test.php",
type: "POST",
data:"time="+timer
}).done(function(ret){
//转化json
var json=$.parseJSON(ret);
if (json==null) {
$block.css("visibility","visible");
$block.text("到底了");
return;
}
else{$block.css("visibility","hidden");}
callback(json.data);
timer++;
});
};
5.元素拼接
lazyLoad.addNode=function(dataitems){
var cardnode = '需要拼接的内容';
return $(cardnode);
};
6.在页面调用init(),并传入这个目标块
lazyLoad.init($('#visible-block'));
附GitHub地址
https://github.com/steffenx/H5Lazyload