JS 滚动加载

js滚动加载原理:

 

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	
	</head>
<style type="text/css">
	 html,body,ul,li {
	margin:0;
	padding:0;
	border:0;
	vertical-align:baseline;
}
body,html {
	line-height:1;
	font-family:"Microsoft YaHei",Arial,Helvetica,sans-serif;
	font-size:16px;
	color:#333;
}
ol,ul {
	list-style:none;
}
a {
	text-decoration:none;
}
body {
	background:#f2f2f2;
}
.prolist li {
	height:50px;
	line-height:50px;
	border-bottom:1px solid #f8f8f8;
	background:#fff;
	padding:0 15px;
	text-overflow:ellipsis;
	overflow:hidden;
	white-space:nowrap;
}
.prolist li a {
	color:#333;
	font-size:16px;
}
/**加载效果旋转**/
        @-webkit-keyframes rotate {
	0% {
	-webkit-transform:rotate(0deg);
	transform:rotate(0deg);
}
100% {
	-webkit-transform:rotate(360deg);
	transform:rotate(360deg);
}
}@keyframes rotate {
	0% {
	-webkit-transform:rotate(0deg);
	transform:rotate(0deg);
}
100% {
	-webkit-transform:rotate(360deg);
	transform:rotate(360deg);
}
}.loadmore {
	display:block;
	line-height:50px;
	text-align:center;
	color:#ccc;
	font-size:14px;
}
.loadmore span {
	height:20px;
	width:20px;
	border-radius:100%;
	display:inline-block;
	margin:10px;
	border:2px solid #f60;
	border-bottom-color:transparent;
	vertical-align:middle;
	-webkit-animation:rotate 1.1s infinite linear;
	animation:rotate 1.1s infinite linear;
}
.loadover {
	position:relative;
	margin:0 12px;
	padding:24px 0;
	height:20px;
	line-height:20px;
	color:#909090;
	text-align:center;
}
.loadover span {
	position:relative;
	display:inline-block;
	padding:0 6px;
	height:20px;
	background:#F2F2F2;
	z-index:2
}
.loadover:after {
	content:''position:absolute;
	left:0;
	top:50%;
	width:100%;
	height:1px;
	background:#DCDCDC;
	z-index:1;
	display:block;
}
		
			
</style>
	
	
<body>
		
		
<ul class="prolist">
    <li><a href="">好经典人生语句,经典得让人心痛!</a></li>
    <li><a href="">好经典人生语句,经典得让人心痛!</a></li>
    <li><a href="">好经典人生语句,经典得让人心痛!</a></li>
    <li><a href="">好经典人生语句,经典得让人心痛!</a></li>
    <li><a href="">好经典人生语句,经典得让人心痛!</a></li>
    <li><a href="">好经典人生语句,经典得让人心痛!</a></li>
    <li><a href="">好经典人生语句,经典得让人心痛!</a></li>
    <li><a href="">好经典人生语句,经典得让人心痛!</a></li>
    <li><a href="">好经典人生语句,经典得让人心痛!</a></li>
    <li><a href="">好经典人生语句,经典得让人心痛!</a></li>
    <li><a href="">好经典人生语句,经典得让人心痛!</a></li>

</ul>	
		

<script src="<?php echo base_url('public/js/jquery-1.10.0.min.js')?>"></script>
<script>
		
	var page=1;
    var finished=0;
    var sover=0;

    //如果屏幕未到整屏自动加载下一页补满
    var setdefult=setInterval(function (){
        if(sover==1)
            clearInterval(setdefult);
        else if($(".prolist").height()<$(window).height())
            loadmore($(window));
        else
            clearInterval(setdefult);
    },500);

    //加载完
    function loadover(){
        if(sover==1)
        {
            var overtext="Duang~到底了";
            $(".loadmore").remove();
            if($(".loadover").length>0)
            {
                $(".loadover span").eq(0).html(overtext);
            }
            else
            {
                var txt='<div class="loadover"><span>'+overtext+'</span></div>'
                $("body").append(txt);
            }
        }
    }

    //加载更多
    var vid=0;
    function loadmore(obj){
        if(finished==0 && sover==0)
        {
            var scrollTop = $(obj).scrollTop();
            var scrollHeight = $(document).height();
            var windowHeight = $(obj).height();

            if($(".loadmore").length==0)
            {
                var txt='<div class="loadmore"><span class="loading"></span>加载中..</div>'
                $("body").append(txt);
            }

            if (scrollTop + windowHeight -scrollHeight<=50 ) {
                //此处是滚动条到底部时候触发的事件,在这里写要加载的数据,或者是拉动滚动条的操作


                //防止未加载完再次执行
                finished=1;

                var result = "";
                for(var i = 0; i < 6; i++){
                    vid++;
                    result+='<li>'
                    +'<a href="">好经典人生语句,经典得让人心痛!'+parseInt(vid)+'</a>'
                    +'</li>'
                }
                setTimeout(function(){
                    //$(".loadmore").remove();
                    $('.prolist').append(result);
                    page+=1;
                    finished=0;
                    //最后一页
                    if(page==10)
                    {
                        sover=1;
                        loadover();
                    }
                },1000);
                /*$.ajax({
                 type: 'GET',
                 url: 'json/more.json?t=25&page='+page,
                 dataType: 'json',
                 success: function(data){
                 if(data=="")
                 {
                 sover = 1;
                 loadover();
                 if (page == 1) {
                 $("#no_msg").removeClass("hidden");
                 $(".loadover").remove();
                 }
                 }
                 else
                 {
                 var result = ''
                 for(var i = 0; i < data.lists.length; i++){
                 result+='<li>'
                 +'<a href="'+data.lists[i].link+'">'+data.lists[i].title+parseInt(page+1)+"-"+i+'</a>'
                 +'</li>'
                 }

                 // 为了测试,延迟1秒加载
                 setTimeout(function(){
                 $(".loadmore").remove();
                 $('.prolist').append(result);
                 page+=1;
                 finished=0;
                 //最后一页
                 if(page==10)
                 {
                 sover=1;
                 loadover();
                 }
                 },1000);
                 }
                 },
                 error: function(xhr, type){
                 alert('Ajax error!');
                 }
                 });*/
            }
        }
    }
    //页面滚动执行事件
    $(window).scroll(function (){
        loadmore($(this));
    });	
		
</script>	
		
		
		
		
	</body>
</html>

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
参数说明 listLoadingMore({id:"",id2:function(){},action:function(){},pageNum:10,getNew:undefined,funcArg:undefined,func:function(){},loadingMustTime:0,loadingDom:function(){},loadedDom:function(){},nullDataFunc:function(){},endFunc:function(){},errorFunc:function(){}}); id:滚动条id,不可以是body; id2:滚动列表的id,通过function自行根据情况返回; action:数据来源的ajax地址,插件会自动加上page和length(分别表示请求页数和当前已有记录数),返回格式统一是[{},{}...],此类jsonArray; ajaxType:ajax提交方式,将更改传递数据的方式,默认post; pageNum:每页加载数量,将会根据这个数量判断是否全部加载完成; getNew:自定义获取数据方法; funcArg:自定义获取数据时传递的参数,类型为函数,返回所需参数; childrenTag:列表子项的标签,默认LI; func:非自定义获取数据时,创建每行数据的方法; loadingMustTime:强制最小加载时间,默认0; loadingDom:加载中动画自定义,返回Dom或者HTML代码; loadedDom:完全加载完成动画自定义,返回Dom或者HTML代码; nullDataFunc:数据列表为空时执行的方法; endFunc:每页数据加载完成时执行的方法; errorFunc:ajax获取数据失败时调用的方法。 回调方法 调用本方法初始化后将会得到一个专属的方法集: Object {getNew:function,isFull:function,isRunning:function,isStop:function,loading:function,show:function}; getNew():忽略判断条件,强制执行加载操作。此时数据传递中,page值可能出错,但length值一定正确,请谨慎判断后在执行该方法; isFull(boolean):修改列表加载完成标志。true为全部加载完成,false则相反; isRunning(boolean):修改列表当前是否正在加载中标志。几乎没有使用的机会; isStop(boolean):设置是否停止加载,设置为true时将会阻止未来的所有加载操作; loading():根据当前滚动条的位置,自动判断是否需要加载新数据; show(boolean,boolean):强制设置加载中和加载完成dom的显示或隐藏,true表示显示,false相对。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值