最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

H5基于iScroll實(shí)現(xiàn)下拉刷新和上拉加載更多

 更新時(shí)間:2017年07月18日 09:23:10   作者:garfieldzf  
這篇文章主要為大家詳細(xì)介紹了H5基于iScroll實(shí)現(xiàn)下拉刷新和上拉加載更多效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

前言

      前一段有個(gè)手機(jī)端的項(xiàng)目需要用到下拉刷新和上拉加載更多的效果,腦海里第一反映就是微博那種效果,剛開始的理解有些偏差,以為下拉也是追加數(shù)據(jù),上拉也是追加數(shù)據(jù),后請(qǐng)教同事后發(fā)現(xiàn)其實(shí)下拉只是刷新最新數(shù)據(jù)而已,上拉是追加數(shù)據(jù)。

使用技巧

      1、引用iScroll.js, 在初始化時(shí)添加兩個(gè)事件監(jiān)聽:touchMove、DOMContentLoaded。

      2、實(shí)現(xiàn)iScroll插件的onScrollEnd事件, 也就是在這個(gè)事件里調(diào)用你自己的ajax方法實(shí)現(xiàn)數(shù)據(jù)的刷新和追加。

      3、上拉加載更多請(qǐng)求后臺(tái)時(shí)就相當(dāng)于分頁(yè)請(qǐng)求數(shù)據(jù),這時(shí)候需要在ajax請(qǐng)求時(shí)發(fā)送pageIndex參數(shù),而初始化加載時(shí)需要從后臺(tái)返回一個(gè)pageCount以便前臺(tái)判斷。

      4、最關(guān)鍵的就是實(shí)現(xiàn)下拉刷新方法(pullDownAction)和上拉加載更多(pullUpAction)方法。

效果圖

 

實(shí)現(xiàn)方法

var   myScroll,
  pullDownEl, pullDownOffset,
  pullUpEl, pullUpOffset,
  generatedCount = 0;
 
/**
 * 下拉刷新 (自定義實(shí)現(xiàn)此方法)
 * myScroll.refresh(); 數(shù)據(jù)加載完成后,調(diào)用界面更新方法
 */
function pullDownAction () {
  setTimeout(function () {  
    var el, li, i;
    el = document.getElementById('thelist');
 
    for (i=0; i<3; i++) {
      li = document.createElement('li');
      li.innerText = 'Generated row ' + (++generatedCount);
      el.insertBefore(li, el.childNodes[0]);
    }
     
    myScroll.refresh();   //數(shù)據(jù)加載完成后,調(diào)用界面更新方法 
  }, 1000); 
}
 
/**
 * 滾動(dòng)翻頁(yè) (自定義實(shí)現(xiàn)此方法)
 * myScroll.refresh();   // 數(shù)據(jù)加載完成后,調(diào)用界面更新方法
 */
function pullUpAction () {
  setTimeout(function () {  // <-- Simulate network congestion, remove setTimeout from production!
    var el, li, i;
    el = document.getElementById('thelist');
 
    for (i=0; i<3; i++) {
      li = document.createElement('li');
      li.innerText = 'Generated row ' + (++generatedCount);
      el.appendChild(li, el.childNodes[0]);
    }
     
    myScroll.refresh();   //數(shù)據(jù)加載完成后,調(diào)用界面更新方法
  }, 1000); 
}
 
/**
 * 初始化iScroll控件
 */
function loaded() {
  pullDownEl = document.getElementById('pullDown');
  pullDownOffset = pullDownEl.offsetHeight;
  pullUpEl = document.getElementById('pullUp'); 
  pullUpOffset = pullUpEl.offsetHeight;
   
  myScroll = new iScroll('wrapper', {
    scrollbarClass: 'myScrollbar',
    useTransition: false,
    topOffset: pullDownOffset,
    onRefresh: function () {
      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 () {
      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 = '下拉刷新...';
        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 = '上拉加載更多...';
        this.maxScrollY = pullUpOffset;
      }
    },
    onScrollEnd: function () {
      if (pullDownEl.className.match('flip')) {
        pullDownEl.className = 'loading';
        pullDownEl.querySelector('.pullDownLabel').innerHTML = '加載中...';        
        pullDownAction();  // ajax call
      } else if (pullUpEl.className.match('flip')) {
        pullUpEl.className = 'loading';
        pullUpEl.querySelector('.pullUpLabel').innerHTML = '加載中...';        
        pullUpAction(); // ajax call
      }
    }
  });
   
  setTimeout(function () { document.getElementById('wrapper').style.left = '0'; }, 800);
}
 
//初始化綁定iScroll控件
document.addEventListener('touchmove', function (e) { e.preventDefault(); }, false);
document.addEventListener('DOMContentLoaded', loaded, false);

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

八宿县| 湘西| 霍山县| 乐清市| 云浮市| 厦门市| 北京市| 鄢陵县| 历史| 从化市| 江达县| 周至县| 清河县| 乌鲁木齐市| 甘孜县| 西青区| 荆门市| 保康县| 札达县| 精河县| 繁峙县| 读书| 嘉义市| 依兰县| 任丘市| 江山市| 长宁区| 平顺县| 焉耆| 义乌市| 石景山区| 睢宁县| 南乐县| 巴中市| 临海市| 延安市| 湘潭县| 卢氏县| 峨山| 时尚| 泌阳县|