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

  • 相关阅读:
    模拟赛总结
    2018.04.06学习总结
    2018.04.06学习总结
    Java实现 LeetCode 672 灯泡开关 Ⅱ(数学思路问题)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 671 二叉树中第二小的节点(遍历树)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
    Java实现 LeetCode 670 最大交换(暴力)
  • 原文地址:https://www.cnblogs.com/zhangxiaolei521/p/6540009.html
Copyright © 2011-2022 走看看