下拉加載更多DEMO(js實現)

項目的一個前端頁面展現已購買商品時,要求能下拉加載更多。花了點時間研究這個功能,之前沒作過。javascript

    首先須要給div加scroll事件,監聽滾動條滾動動做。那什麼時候觸發加載動做呢?當滾動條滾到底的時候。如何判斷滾動條滾到底呢?html

    當滾動條的高度加上滾動條到div頂部的高度等於div的可滾動高度時,說明滾動條到底部了。公式以下。前端

 

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


    給出一個能跑的demo,須要引入jquery。java

 

 

[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)時,就動態加載更多,向服務端請求資源。也就是預加載,預讀取。公式以下。jquery

 

 

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


    一個js功能,最後發現實際上是個數學問題。最開始看同事寫的相似功能的代碼式,十分繁瑣。當本身總結完這個公式後,思路馬上清晰了。透過現象看本質。app

相關文章
相關標籤/搜索