H5頁面基於iScroll.js插件實現下拉刷新,上拉加載更多

前言javascript

在我以前的項目中,頁面老是乾巴巴的,用戶的體驗不是特別完美,我也是一直以爲把設計師給到的psd作出來就好,不多考慮用戶的感覺。我喜歡看不一樣的App,操做每一個步驟,觀賞每一個能和我互動的交互設計效果,我很喜歡。感受有迴應。css

如今開始實現我頁面的第一個交互效果,讓個人頁面更生動一點。html

 

實現的插件java

基於iScroll.js插件ajax

 

代碼json

htmlapp

<div class="header">我是頭部固定</div>動畫

<div id="wrapper">this

          <div id="scroller">url

                     <div id="pullDown"> <span class="pullDownLabel">下拉刷新</span> </div>

                      <ul id="thelist">

                                 <li>我是小公舉</li>

                                 <li>我是小公舉</li>

                                  <li>我是小公舉</li>

                                  <li>我是小公舉</li>

                                  <li>我是小公舉</li>

                                  <li>我是小公舉</li>

                                  <li>我是小公舉</li>

                                  <li>我是小公舉</li>

                                  <li>我是小公舉</li>

                                  <li>我是小公舉</li>

                                  <li>我是小公舉</li>

                      </ul>

                        <div id="pullUp"><span class="pullUpLabel">上拉加載更多</span></div>

           </div>

</div>

<div class=""footer>我是底部固定</div>

css

*{margin:0;padding:0}

body{font-size:12px}

li{list-style:none}

.header{position:absolute;top:0;left:0;width:100%;height:45px;line-height:45px;text-align:center;color:#333;font-size:16px}

.footer{position:absolute;bottom:0;left:0;width:100%;height:45px;line-height:45px;text-align:center;color:#333;font-size:16px}

#wrapper{position:absolute;top:45px;left:0;bottom:48px;width:100%;}

#wrapper #scroller .thelist li{height:60px;padding:0 10px;line-height:60px;background:#ecf6ff;margin-top:10px;}

#pullDown,#pullUp{height:30px;line-height:30px;padding:0 10px;color:#888;text-align:center}

javascript

<script type="text/javascript" src="js/iscroll.js"></script>

<script>

        var myScroll, pullDownEl, pullDownOffset, pullUpEl, pullUpOffset, generatedCount = 0;

        function loaded(){

               pullDownEl = document.getElementById('pullDown');

               pullDownOffset = pullDownEl.offsetHeight;      //獲取下拉刷新的div高度 30

               pullUpEl = document.getElementById('pullUp');

               pullUpOffset = pullUpEl.offsetHeight;               // 獲取上拉加載的div高度 30

               myScroll = new iScroll('wrapper',{

                             useTransition: true,                 //options.useTransition 默認爲true,支持css transition 動畫;

                             topOffset: pullDownOffset,     //經過topOffset參數屬性設置iScroll已經滾動的基準值;

                             onRefresh: function(){             //經過onRefresh參數方法調整刷新後的界面結構

                                          if(pullDownEl.className.match('loading')){

                                                      pullDownEl.className= '' ;

                                                      pullDownEl.querySelector('.pullDownLabel').innerHtml = '下拉刷新' ;

                                            } else if (pullUpEl.className.match('loading')){

                                                      pullUpEl.className = '' ;

                                                      pullUpEl.querySelector('.pullUpLabel').innerHtml = '上拉加載更多' ; 

                                              }

                              },

                               onScrollMove: function(){                         //經過onScrollMove參數方法判斷當前滾動是在頂端仍是底端

                                                if(this.y > 5 && !pullDownEl.className.match('flip')){

                                                               pullDownEl.className = 'flip' ;

                                                               pullDownEl.querySelector('.pullDownLabel').innerHtml = '刷新釋放' ;

                                                               this.minScrollY = 0;

                                                 } else if(this.y < 5 && pullDownEl.className.match('flip')){                                                     

                                                               pullDownEl.className = ' ' ;

                                                               pullDownEl.querySelector('.pullDownLabel').innerHtml = 'Pull down to refresh...' ;

                                                               this.minScrollY = -pullDownOffset;

                                                 } else if (this.y < (this.maxScrollY - 5) && !pullUpEl.className.match(flip)){

                                                                pullUpEl.className = 'flip';

                                                                pullUpEl.querySelector('.pullUpLabel').innerHtml = '釋放刷新';

                                                                this.maxScrollY = this.maxScrollY;

                                                 } else if (this.y > (this.maxScrollY + 5) && pullUpEl.className.match('flip')){

                                                                 pullUpEl.className = ' ';

                                                                 pullUpEl.querySelector('.pullUpLabel').innerHtml = 'Pull up to load more...;

                                                                  this.maxScrollY = pullUpOffset;

                                                 }

                                 },

                                 onScrollEnd: function(){

                                                 if(pullDownEl.className.match('flip')){

                                                                     pullDownEl.className = 'loading';

                                                                     pullDownEl.querySelector('.pullDownLabel').innerHtml = '加載中';

                                                                     pullDownAction();

                                                  } else if(pullUpEl.className.match('flip')){

                                                                      pullUpEl.className = 'loading';

                                                                      pullUpEl.querySelector('.pullUpLabel').innerHtml = '加載中';

                                                                      pullUpAction();

                                                  }

                                 },

               });

               loadAction();

        };

 

        document.addEventListener('touchmove',function(e){ 

                 e.preventDefaule();

        },false);  //阻止冒泡

 

         document.addEventListener('DOMContentLoaded',function(){

                 setTimeout(loaded,0)

       }.false);   //當DOMContentLoaded 事件觸發時,僅當DOM加載完成,不包括樣式表,圖片,flash。

       

         //初始狀態,加載數據

        function loadAction(){

                 var el, li;

                  el = document.getElementById('thelist');

                  for(var i = 0; i < 10; i++){

                           li = doument.createElement('li');

                           li.innerHtml = '初始數據--' + (++generatedCount);

                           el.appendChild(li, el.childNodes[0]);

                 };

                  myScroll.refresh();

         };

 

            //下拉刷新當前數據

            function pullDownAction(){

                        setTimeout(function(){

                                 //這裏執行刷新操做

                                   myScroll.refresh();

                         },400);

            };

 

              //上拉加載更多數據

           function pullUpAction(){

                 setTimeout(function() {

                       var el, li;

                       el = document.getElementById('thelist');

                       for(var i = 0; i < 10; i++){

                                 li = doument.createElement('li');

                                 li.innerText= '上拉加載--' + (++generatedCount);

                                el.appendChild(li, el.childNodes[0]);

                       };

                     myScroll.refresh();

                     },400);

             }

 

//ajax

eg:  function pullUpAction(){

               setTimeout(function(){

                          var el, li, i;

                          document.getElementById("thelist");

                            //========================

                            $.ajax({

                                      type: "GET",

                                      url: "LoadMore.aspx",

                                      data: { page: generatedCount },

                                      dataType: "json",

                                      success: function(data){

                                                 var json = data;

                                                 $(json).each(function(){

                                                           li = document.createElement('li');

                                                           li.innerHtml = ' XXXXXXXXXXXX';

                                                           el.insetBefore(li, el.childNodes[0]);

                                                })

                                       }

                            });

                         //==========================

                         myScroll.refesh();

               },1000);

       }

</script>

 

參考搬運代碼地址:http://blog.csdn.net/xw505501936/article/details/48975991

相關文章
相關標籤/搜索