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

相关文章
|
1月前
|
JavaScript 前端开发 内存技术
js文件的入口代码及需要入口代码的原因
js文件的入口代码及需要入口代码的原因
35 0
|
1月前
|
Web App开发 前端开发 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(一)
JavaScript动态渲染页面爬取——Selenium的使用(一)
|
1月前
|
Web App开发 数据采集 JavaScript
JavaScript动态渲染页面爬取——Selenium的使用(二)
JavaScript动态渲染页面爬取——Selenium的使用(二)
|
1月前
|
JavaScript 前端开发
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
电话号码正则表达式 代码 javascript+html,JS正则表达式判断11位手机号码
98 1
|
2月前
|
JavaScript 前端开发 数据安全/隐私保护
混淆指定js文件
【9月更文挑战第26天】JavaScript 混淆旨在保护代码知识产权、减小文件体积和提高安全性。方法包括变量名和函数名混淆、代码压缩、控制流平坦化及字符串加密。常用工具如 UglifyJS 和 JScrambler 可实现这些功能。然而,混淆可能带来兼容性和调试困难等问题,需谨慎使用并确保法律合规。
|
30天前
|
JavaScript 前端开发 应用服务中间件
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
vue前端开发中,通过vue.config.js配置和nginx配置,实现多个入口文件的实现方法
137 0
|
2月前
|
移动开发 JavaScript 前端开发
js之操作文件| 12-5
js之操作文件| 12-5
|
1月前
|
JavaScript 前端开发 API
JavaScript全屏,监听页面是否全屏
JavaScript全屏,监听页面是否全屏
55 0
|
1月前
|
前端开发 JavaScript
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
JavaScript动态渲染页面爬取——CSS位置偏移反爬案例分析与爬取实战
|
1月前
|
存储 JSON JavaScript
JavaScript动态渲染页面爬取——Pyppeteer爬取实战
JavaScript动态渲染页面爬取——Pyppeteer爬取实战