zoukankan      html  css  js  c++  java
  • 下拉加载更多DEMO(js实现)

    项目的一个前端页面展示已购买商品时,要求能下拉加载更多。花了点时间研究这个功能,以前没做过。

        首先需要给div加scroll事件,监听滚动条滚动动作。那何时触发加载动作呢?当滚动条滚到底的时候。如何判断滚动条滚到底呢?

        当滚动条的高度加上滚动条到div顶部的高度等于div的可滚动高度时,说明滚动条到底部了。公式如下。

    [javascript] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. this.scrollHeight <= $(this).scrollTop() + $(this).height()  


        给出一个能跑的demo,需要引入jquery。

    [javascript] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <!DOCTYPE=html>  
    2. <html>  
    3. <head>  
    4. <script src="jquery.js" type="text/javascript"></script>  
    5. </head>  
    6. <body>  
    7.     <div>下拉加载更多</div>  
    8.     <div class="main" style="height:700px;overflow:auto;">  
    9.         <div class="child" style='border:1px solid red;margin-top:20px;color:grey;height:800px' ></div>  
    10.     </div>  
    11. </body>  
    12. <script  type="text/javascript">  
    13. $(document).ready(function(){  
    14.     $(".main").unbind("scroll").bind("scroll", function(e){  
    15.         var sum = this.scrollHeight;  
    16.         if (sum <= $(this).scrollTop() + $(this).height()) {  
    17.             $(".main").append($(".child").clone());  
    18.         }  
    19.     });  
    20. });  
    21. </script>  
    22. </html>  


        如果等滚动条拉到底部时再加载,会影响用户体验。因为一般动态加载的时候都需要向服务端请求资源,这时需要时间。一个更佳的方式是,当滚动条距离底部一定距离(C)时,就动态加载更多,向服务端请求资源。也就是预加载,预读取。公式如下。

    [javascript] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. this.scrollHeight - C <= $(this).scrollTop() + $(this).height()  


        一个js功能,最后发现其实是个数学问题。最开始看同事写的类似功能的代码式,十分繁琐。当自己总结完这个公式后,思路立刻清晰了。透过现象看本质。

  • 相关阅读:
    c++ builder 获取命令行参数
    c++ builder 只允许程序运行一个实例
    jQuery学习笔记(三)
    jQuery学习笔记(二)
    jQuery实现一个弹出登陆层的效果
    jQuery学习笔记(一)
    20117月
    201112学习
    21125
    211211
  • 原文地址:https://www.cnblogs.com/zhangxiaolei521/p/6540009.html
Copyright © 2011-2022 走看看