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

开发 前端
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> 

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

责任编辑:王雪燕 来源: 博客园
相关推荐

2020-10-09 14:02:57

JS模拟监控页面FPS

2015-03-26 13:14:53

javascriptjs callback实现调用

2015-04-22 10:57:22

androidSwipeRefres

2012-03-28 22:16:54

苹果

2016-08-05 17:01:09

AndroidRecyclerVie下拉刷新

2015-03-23 18:11:39

UITableViewswift下拉刷新

2023-06-12 15:37:38

鸿蒙ArkUI

2021-09-02 10:00:42

鸿蒙HarmonyOS应用

2021-12-01 10:02:57

鸿蒙HarmonyOS应用

2013-07-17 16:33:02

下拉刷新listvie滚动到底部加载Android开发学习

2012-05-22 11:15:37

jQuery

2021-03-12 16:25:17

技巧vue页面刷新

2020-08-28 09:39:21

手机屏幕屏幕刷新率高刷新率

2009-06-11 10:35:49

图像下拉列表imgdiv

2012-08-14 14:00:21

JavaScript

2017-10-17 15:40:25

javascript刷新页面

2012-03-02 09:37:53

Ajax

2015-03-19 10:12:36

下拉刷新开源组件

2009-07-31 08:56:59

ASP.NET页面刷新

2021-04-06 09:26:17

js前端通信极简
点赞
收藏

51CTO技术栈公众号