欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

APP中javascript+css3實(shí)現(xiàn)下拉刷新效果

 更新時(shí)間:2016年01月27日 08:49:11   作者:lihualong  
本文給大家分享的是如何在APP中使用javascript結(jié)合CSS3實(shí)現(xiàn)下拉刷新特效的代碼,非常的簡(jiǎn)單實(shí)用,有需要的小伙伴可以參考下。

原生app里的數(shù)據(jù)列表都會(huì)使用下拉刷新的效果,在webapp里可以采用iscroll、swiper等插件或框架實(shí)現(xiàn),那么如何自己編碼實(shí)現(xiàn)類似的效果呢,下面介紹使用原生js+css3實(shí)現(xiàn)的簡(jiǎn)單效果。

html布局

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
<title>test</title>
<style type="text/css" media="screen">
 body{margin: 0;}
 ul{list-style: none;padding: 0;}
 li{height: 30px;border-bottom: 1px solid #ddd;line-height: 30px;padding-left: 10px;}
 .scroller .loading{height: 60px;line-height: 60px;text-align: center;width: 100%;background-color: #f1f1f1;}
 .scroller{-webkit-overflow-scrolling:touch;}
</style> 
</head> 
<body > 
<div id="container" class="scroller" >
<div class="loading">
 下拉刷新數(shù)據(jù)
</div>
<ul>
 <li><a href="#">列表數(shù)據(jù)1</a></li>
 <li><a href="#">列表數(shù)據(jù)2</a></li>
 <li><a href="#">列表數(shù)據(jù)3</a></li>
 <li><a href="#">列表數(shù)據(jù)4</a></li>
 <li><a href="#">列表數(shù)據(jù)5</a></li>
 <li><a href="#">列表數(shù)據(jù)6</a></li>
 <li><a href="#">列表數(shù)據(jù)7</a></li>
 <li><a href="#">列表數(shù)據(jù)8</a></li>
 <li><a href="#">列表數(shù)據(jù)9</a></li>
 <li><a href="#">列表數(shù)據(jù)10</a></li>
 <li><a href="#">列表數(shù)據(jù)11</a></li>
 <li><a href="#">列表數(shù)據(jù)12</a></li>
 <li><a href="#">列表數(shù)據(jù)13</a></li>
 <li><a href="#">列表數(shù)據(jù)14</a></li>
 <li><a href="#">列表數(shù)據(jù)15</a></li>
 <li><a href="#">列表數(shù)據(jù)16</a></li>
 <li><a href="#">列表數(shù)據(jù)17</a></li>
 <li><a href="#">列表數(shù)據(jù)18</a></li>
 <li><a href="#">列表數(shù)據(jù)19</a></li>
 <li><a href="#">列表數(shù)據(jù)20</a></li>
 <li><a href="#">列表數(shù)據(jù)21</a></li>
 <li><a href="#">列表數(shù)據(jù)22</a></li>
 <li><a href="#">列表數(shù)據(jù)23</a></li>
 <li><a href="#">列表數(shù)據(jù)24</a></li>
 <li><a href="#">列表數(shù)據(jù)25</a></li>
 <li><a href="#">列表數(shù)據(jù)26</a></li>
 <li><a href="#">列表數(shù)據(jù)27</a></li>
 <li><a href="#">列表數(shù)據(jù)28</a></li>
 <li><a href="#">列表數(shù)據(jù)29</a></li>
 <li><a href="#">列表數(shù)據(jù)30</a></li>
</ul> 
</div>
<body>
</html>

js邏輯

 var slide = function (option) {
 var defaults={
  container:'',
  next:function(){}
 }
 var start,
   end,
   length,
   isLock = false,//是否鎖定整個(gè)操作
   isCanDo = false,//是否移動(dòng)滑塊
   isTouchPad = (/hp-tablet/gi).test(navigator.appVersion),
   hasTouch = 'ontouchstart' in window && !isTouchPad;
 var obj = document.querySelector(option.container);
 var loading=obj.firstElementChild;
 var offset=loading.clientHeight;
 var objparent = obj.parentElement;
 /*操作方法*/
 var fn =
 {
  //移動(dòng)容器
  translate: function (diff) {
   obj.style.webkitTransform='translate3d(0,'+diff+'px,0)';
   obj.style.transform='translate3d(0,'+diff+'px,0)';
  },
  //設(shè)置效果時(shí)間
  setTransition: function (time) {
   obj.style.webkitTransition='all '+time+'s';
   obj.style.transition='all '+time+'s';
  },
  //返回到初始位置
  back: function () {
   fn.translate(0 - offset);
   //標(biāo)識(shí)操作完成
   isLock = false;
  },
  addEvent:function(element,event_name,event_fn){
   if (element.addEventListener) {
    element.addEventListener(event_name, event_fn, false);
   } else if (element.attachEvent) {
    element.attachEvent('on' + event_name, event_fn);
   } else {
    element['on' + event_name] = event_fn;
   }
  }
 };

 fn.translate(0-offset);
 fn.addEvent(obj,'touchstart',start);
 fn.addEvent(obj,'touchmove',move);
 fn.addEvent(obj,'touchend',end);
 fn.addEvent(obj,'mousedown',start)
 fn.addEvent(obj,'mousemove',move)
 fn.addEvent(obj,'mouseup',end)

 //滑動(dòng)開始
 function start(e) {
  if (objparent.scrollTop <= 0 && !isLock) {
   var even = typeof event == "undefined" ? e : event;
   //標(biāo)識(shí)操作進(jìn)行中
   isLock = true;
   isCanDo = true;
   //保存當(dāng)前鼠標(biāo)Y坐標(biāo)
   start = hasTouch ? even.touches[0].pageY : even.pageY;
   //消除滑塊動(dòng)畫時(shí)間
   fn.setTransition(0);
   loading.innerHTML='下拉刷新數(shù)據(jù)';
  }
  return false;
 }

 //滑動(dòng)中
 function move(e) {
  if (objparent.scrollTop <= 0 && isCanDo) {
   var even = typeof event == "undefined" ? e : event;
   //保存當(dāng)前鼠標(biāo)Y坐標(biāo)
   end = hasTouch ? even.touches[0].pageY : even.pageY;
   if (start < end) {
    even.preventDefault();
    //消除滑塊動(dòng)畫時(shí)間
    fn.setTransition(0);
    //移動(dòng)滑塊
    if((end-start-offset)/2<=150) {
     length=(end - start - offset) / 2;
     fn.translate(length);
    }
    else {
     length+=0.3;
     fn.translate(length);
    }
   }
  }
 }
 //滑動(dòng)結(jié)束
 function end(e) {
  if (isCanDo) {
   isCanDo = false;
   //判斷滑動(dòng)距離是否大于等于指定值
   if (end - start >= offset) {
    //設(shè)置滑塊回彈時(shí)間
    fn.setTransition(1);
    //保留提示部分
    fn.translate(0);
    //執(zhí)行回調(diào)函數(shù)
    loading.innerHTML='正在刷新數(shù)據(jù)';
    if (typeof option.next == "function") {
     option.next.call(fn, e);
    }
   } else {
    //返回初始狀態(tài)
    fn.back();
   }
  }
 }
}
slide({container:"#container",next: function (e) {
 //松手之后執(zhí)行邏輯,ajax請(qǐng)求數(shù)據(jù),數(shù)據(jù)返回后隱藏加載中提示
 var that = this;
 setTimeout(function () {
  that.back.call();
 }, 2000);
}});

代碼不是很多,細(xì)節(jié)還需完善。

相關(guān)文章

  • JavaScript數(shù)組、json對(duì)象、eval()函數(shù)用法實(shí)例分析

    JavaScript數(shù)組、json對(duì)象、eval()函數(shù)用法實(shí)例分析

    這篇文章主要介紹了JavaScript數(shù)組、json對(duì)象、eval()函數(shù)用法,結(jié)合實(shí)例形式分析了JS數(shù)組創(chuàng)建、賦值、連接、翻轉(zhuǎn),json對(duì)象定義、讀取,eval()函數(shù)的功能、使用等,需要的朋友可以參考下
    2019-02-02
  • js中刪除數(shù)組中的某一元素實(shí)例(無下標(biāo)時(shí))

    js中刪除數(shù)組中的某一元素實(shí)例(無下標(biāo)時(shí))

    下面小編就為大家?guī)硪黄猨s中刪除數(shù)組中的某一元素實(shí)例(無下標(biāo)時(shí))。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-02-02
  • JavaScript結(jié)合Canvas繪畫畫運(yùn)動(dòng)小球

    JavaScript結(jié)合Canvas繪畫畫運(yùn)動(dòng)小球

    這篇文章主要介紹了JavaScript結(jié)合Canvas畫運(yùn)動(dòng)小球,canvas被稱為畫布,可以結(jié)合javascript實(shí)現(xiàn)繪制各種圖形,制作各種炫酷的動(dòng)畫效果,下面文章更多詳細(xì)內(nèi)容介紹需要的小伙伴可以參考一下
    2022-03-03
  • JS中setTimeout的巧妙用法前端函數(shù)節(jié)流

    JS中setTimeout的巧妙用法前端函數(shù)節(jié)流

    這篇文章主要介紹了JS中setTimeout的巧妙用法前端函數(shù)節(jié)流 的相關(guān)資料,需要的朋友可以參考下
    2016-03-03
  • javascript實(shí)現(xiàn)密碼強(qiáng)度顯示

    javascript實(shí)現(xiàn)密碼強(qiáng)度顯示

    這篇文章主要介紹了使用javascript實(shí)現(xiàn)密碼強(qiáng)度顯示,十分實(shí)用的功能,從個(gè)人項(xiàng)目中移植出來的,分享給大家,希望大家能夠喜歡。
    2015-03-03
  • js異步編程小技巧詳解

    js異步編程小技巧詳解

    這篇文章主要介紹了js異步編程技巧,使用計(jì)數(shù)器的方式,每完成一個(gè)請(qǐng)求計(jì)數(shù)器加1 當(dāng)計(jì)數(shù)器等于2時(shí)執(zhí)行回調(diào)邏輯,兩個(gè)http并行發(fā)送,從而極大的提高了效率,需要的朋友可以參考下
    2017-08-08
  • Three.js利用orbit controls插件(軌道控制)控制模型交互動(dòng)作詳解

    Three.js利用orbit controls插件(軌道控制)控制模型交互動(dòng)作詳解

    這篇文章主要給大家介紹了關(guān)于Three.js利用orbit controls插件,也就是軌道控制來控制模型交互動(dòng)作的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起看看吧。
    2017-09-09
  • js單頁hash路由原理與應(yīng)用實(shí)戰(zhàn)詳解

    js單頁hash路由原理與應(yīng)用實(shí)戰(zhàn)詳解

    本篇文章主要介紹了js單頁hash路由原理與應(yīng)用實(shí)戰(zhàn)詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-08-08
  • thinkphp實(shí)現(xiàn)無限分類(使用遞歸)

    thinkphp實(shí)現(xiàn)無限分類(使用遞歸)

    這篇文章主要介紹了在使用遞歸的情況下thinkphp實(shí)現(xiàn)無限分類,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 利用pixi.js制作簡(jiǎn)單的跑酷小游戲

    利用pixi.js制作簡(jiǎn)單的跑酷小游戲

    PixiJS 提供一個(gè)適用于所有設(shè)備的快速輕量級(jí) 2D 庫。PixiJS 具有完整的 WebGL 支持,并且可以無縫地回退到 HTML5 的畫布。 本文將使用pixi.js制作簡(jiǎn)單的跑酷小游戲,感興趣的可以嘗試一下
    2022-07-07

最新評(píng)論