js 模拟手机页面文件的下拉刷新

老总说需要这个功能,好吧那就看看相关的东西呗

最后弄出了一个简单的下拉刷新页面的形式,还不算太复杂

查看 demo

要在仿真器下才能看到效果,比如chrome的里边(或者用手机浏览器查看,但测试发现有些浏览器有问题,目前手机猎豹是没问题的)

js 模拟手机页面文件的下拉刷新

js 模拟手机页面文件的下拉刷新

js 模拟手机页面文件的下拉刷新

js 模拟手机页面文件的下拉刷新

主要就是:

下拉-->提示松开刷新-->松开后-->开始刷新-->刷新成功后还原

html,css部分

 
 
  1. style type="text/css"
  2.     #slideDown{margin-top: 0;width: 100%;} 
  3.          #slideDown1,#slideDown2{width: 100%;height: 70px;;background: #e9f4f7;display: none;} 
  4.          #slideDown1{height: 20px;} 
  5.          #slideDown1>p,#slideDown2>p{margin: 20px auto;text-align:center;font-size: 14px;color: #37bbf5;} 
  6. </style> 
  7.  
  8.  
  9.     <div id="content"
  10.         <div id="slideDown"
  11.             <div id="slideDown1"
  12.                 <p>松开刷新</p> 
  13.             </div> 
  14.             <div id="slideDown2"
  15.                 <p>正在刷新 ...</p> 
  16.             </div> 
  17.         </div> 
  18.         <div class="myContent"
  19.             <ul> 
  20.                 <li>item1 -- item1 -- item1</li> 
  21.                 <li>item2 -- item2 -- item2</li> 
  22.                 <li>item3 -- item3 -- item3</li> 
  23.                 <li>item4 -- item4 -- item4</li> 
  24.                 <li>item5 -- item5 -- item5</li> 
  25.                 <li>item6 -- item6 -- item6</li> 
  26.                 <li>item7 -- item7 -- item7</li> 
  27.             </ul> 
  28.         </div> 
  29.     </div> 

js部分:

主要就是

为一个节点绑定事件,可以是整个body,按照实际来看

k_touch()函数是主要代码,目前主要涉及三个事件,touchstart touchmove touchend

这里获取touch点坐标是用pageX,pageY 当然不兼容的话先不考虑

因为是下滑才刷新,所以稍微控制一下way,其实也就是通过这个控制是获取pageX 还是pageY

滑一滑可以直接看到dist的变化,其实就把它看做px了吧

更多的功能,以后再说吧..

 
 
  1. <script type="text/javascript"
  2.     //第一步:下拉过程 
  3.     function slideDownStep1(dist){  // dist 下滑的距离,用以拉长背景模拟拉伸效果 
  4.         var slideDown1 = document.getElementById("slideDown1"), 
  5.             slideDown2 = document.getElementById("slideDown2"); 
  6.         slideDown2.style.display = "none"
  7.         slideDown1.style.display = "block"
  8.         slideDown1.style.height = (parseInt("20px") - dist) + "px"
  9.     } 
  10.     //第二步:下拉,然后松开, 
  11.     function slideDownStep2(){  
  12.         var slideDown1 = document.getElementById("slideDown1"), 
  13.             slideDown2 = document.getElementById("slideDown2"); 
  14.         slideDown1.style.display = "none"
  15.         slideDown1.style.height = "20px"
  16.         slideDown2.style.display = "block"
  17.         //刷新数据 
  18.         //location.reload(); 
  19.     } 
  20.     //第三步:刷新完成,回归之前状态 
  21.     function slideDownStep3(){  
  22.         var slideDown1 = document.getElementById("slideDown1"), 
  23.             slideDown2 = document.getElementById("slideDown2"); 
  24.         slideDown1.style.display = "none"
  25.         slideDown2.style.display = "none"
  26.     } 
  27.  
  28.     //下滑刷新调用 
  29.     k_touch("content","y"); 
  30.     //contentId表示对其进行事件绑定,way==>x表示水平方向的操作,y表示竖直方向的操作 
  31.     function k_touch(contentId,way){  
  32.         var _start = 0, 
  33.             _end = 0, 
  34.             _content = document.getElementById(contentId); 
  35.         _content.addEventListener("touchstart",touchStart,false); 
  36.         _content.addEventListener("touchmove",touchMove,false); 
  37.         _content.addEventListener("touchend",touchEnd,false); 
  38.         function touchStart(event){  
  39.             //var touch = event.touches[0]; //这种获取也可以,但已不推荐使用 
  40.  
  41.             var touch = event.targetTouches[0]; 
  42.             if(way == "x"){  
  43.                 _start = touch.pageX; 
  44.             }else{  
  45.                 _start = touch.pageY; 
  46.             } 
  47.         } 
  48.         function touchMove(event){  
  49.             var touch = event.targetTouches[0]; 
  50.             if(way == "x"){  
  51.                 _end = (_start - touch.pageX); 
  52.             }else{  
  53.                 _end = (_start - touch.pageY); 
  54.                 //下滑才执行操作 
  55.                 if(_end < 0){ 
  56.                     slideDownStep1(_end); 
  57.                 } 
  58.             } 
  59.  
  60.         } 
  61.         function touchEnd(event){  
  62.             if(_end >0){  
  63.                 console.log("左滑或上滑  "+_end); 
  64.             }else{  
  65.                 console.log("右滑或下滑"+_end); 
  66.                 slideDownStep2(); 
  67.                 //刷新成功则 
  68.                 //模拟刷新成功进入第三步 
  69.                 setTimeout(function(){  
  70.                     slideDownStep3(); 
  71.                 },2500); 
  72.             } 
  73.         } 
  74.     } 
  75.     </script> 

小尾巴一摆就是一个季节!


作者:imwtr

来源:51CTO

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值