美文网首页前端实用前端学习程序员
借占位符实现滚动到列表底部重新加载数据

借占位符实现滚动到列表底部重新加载数据

作者: webCoder | 来源:发表于2016-04-22 17:40 被阅读856次

    滚动到底部更新数据是个很常见的需求,也是网站优化的一部分。

    • 页面效果
    pic1.png
    • 第一次滚动到底部新加载数据
    pic2.png
    • 再滚动
    pic3.png
    • 源代码
    <!DOCTYPE html>
    <html lang="en">
    <head>
       <meta charset="UTF-8">
       <title>Document</title>
       <style>
           li{width: 100px;height: 100px;background: #000;margin-bottom: 15px;color: #fff;text-align: center;}
       </style>
       <script src="./jquery.min.js"></script>
    </head>
    <body>
       <ul class="ul-wrap">
           <li>1</li>
           <li>1</li>
           <li>1</li>
           <li>1</li>
           <li>1</li>
           <li>1</li>
           <li>1</li>
           <li>1</li>
           <li>1</li>
           <li>1</li>
       </ul>
       <div  id="loadInfo"></div>
       <script>
           function randomColor(){
             var color="#";
             var colorArr=["0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f"];
             for(i=0;i<6;i++){
                 var cur=randomNum(15,0);
                 color+=colorArr[cur];
             }
             function randomNum(max,min){
                 return Math.floor(Math.random()*(max-min+1)+min)
             }
             return color;
           }
    
           //获取滚动高度、文档高度、浏览器视口高度
           var heightFuns=function(){
               //获取滚动高度
               heightFuns.prototype.getScrollTop=function (){
                   var scrollTop=0,bodyScrollTop=0,documentScrollTop=0;
                   if(document.body){
                       bodyScrollTop=document.body.scrollTop;
                   }
                   if(document.documentElement){
                       documentScrollTop=document.documentElement.scrollTop;
                   }
                   scrollTop = (bodyScrollTop-documentScrollTop>0)?bodyScrollTop:documentScrollTop;
                   return scrollTop;
               }
               //获取文档的总高度
               heightFuns.prototype.getScrollHeight=function (){
                   var scrollHeight=0,bodyScrollHeight=0,documentScrollHeight;
                   if(document.body){
                       bodyScrollHeight=document.body.scrollHeight;
                   }
                   if(document.documentElement){
                       documentScrollHeight=document.documentElement.scrollHeight;
                   }
                   scrollHeight=(bodyScrollHeight-documentScrollHeight>0)?bodyScrollHeight:documentScrollHeight;
                   return scrollHeight;
               }
               //获取浏览器视口的高度
               heightFuns.prototype.getWindowHeight=function (){
                   var windowHeight=0;
                   if(document.compatMode == 'CSS1Compat'){
                       windowHeight=document.documentElement.clientHeight;
                   }else{
                       windowHeight=document.body.clientHeight;
                   }
                   return windowHeight;
               }
           }
    
           function showData(){
               $(".ul-wrap").append("<li>new</li>");
               $("body").css("background",randomColor());
               $("#loadInfo").html("");
           }
    
           $(function(){
               var heightObj=new heightFuns();
               window.onscroll=function(){
                   if(heightObj.getScrollTop()==heightObj.getScrollHeight()-heightObj.getWindowHeight()){
                       // setTimeout(showData,1000);
                       showData();
                       $("#loadInfo").html("正在加载...");
                   }
               }
           });
       </script>
    </body>
    </html>
    

    相关文章

      网友评论

      • 431b8a283e14:学习一下
      • ontow:不过我也是刚发现,最后一个方法"getWindowHeight"里边的判断是很有必要的.
        ##document.documentElement.clientHeight与document.body.clientHeight在谷歌浏览器下都能获取到数值.但是数值不一样... :+1:
      • ontow: heightFuns.prototype.getScrollTop
        scrollTop = document.body.scrollTop || document.documentElement.scrollTop;
        这个方法一行就可以写完.为什么要写那么多判断??是有什么深意么??楼主
        webCoder:@ontow 没什么深意 按您写的那样是可以的 更加简化了
      • 0b46e1936751:好棒!
      • ea16fb7f061d:赞
        webCoder:@summer323wy 谢谢~

      本文标题:借占位符实现滚动到列表底部重新加载数据

      本文链接:https://www.haomeiwen.com/subject/wksxrttx.html