首页 > 代码库 > 下拉加载更多DEMO(js实现)
下拉加载更多DEMO(js实现)
项目的一个前端页面展示已购买商品时,要求能下拉加载更多。花了点时间研究这个功能,以前没做过。
首先需要给div加scroll事件,监听滚动条滚动动作。那何时触发加载动作呢?当滚动条滚到底的时候。如何判断滚动条滚到底呢?
当滚动条的高度加上滚动条到div顶部的高度等于div的可滚动高度时,说明滚动条到底部了。公式如下。
[javascript] view plain copy
- this.scrollHeight <= $(this).scrollTop() + $(this).height()
给出一个能跑的demo,需要引入jquery。
[javascript] view plain copy
- <!DOCTYPE=html>
- <html>
- <head>
- <script src=http://www.mamicode.com/"jquery.js" type="text/javascript"></script>
- </head>
- <body>
- <div>下拉加载更多</div>
- <div class="main" style="height:700px;overflow:auto;">
- <div class="child" style=‘border:1px solid red;margin-top:20px;color:grey;height:800px‘ ></div>
- </div>
- </body>
- <script type="text/javascript">
- $(document).ready(function(){
- $(".main").unbind("scroll").bind("scroll", function(e){
- var sum = this.scrollHeight;
- if (sum <= $(this).scrollTop() + $(this).height()) {
- $(".main").append($(".child").clone());
- }
- });
- });
- </script>
- </html>
如果等滚动条拉到底部时再加载,会影响用户体验。因为一般动态加载的时候都需要向服务端请求资源,这时需要时间。一个更佳的方式是,当滚动条距离底部一定距离(C)时,就动态加载更多,向服务端请求资源。也就是预加载,预读取。公式如下。
[javascript] view plain copy
- this.scrollHeight - C <= $(this).scrollTop() + $(this).height()
一个js功能,最后发现其实是个数学问题。最开始看同事写的类似功能的代码式,十分繁琐。当自己总结完这个公式后,思路立刻清晰了。透过现象看本质。
下拉加载更多DEMO(js实现)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。