Android移动端touch实现下拉刷新功能

发布时间 - 2026-01-10 23:08:14    点击率:

第一部分:四个touch事件

  1.touchstart:只要将手指放在了屏幕上(而不管是几只),都会触发touchstart事件。

  2.touchmove: 当我们用手指在屏幕上滑动时,这个事件会被连续触发。 如果我们不希望页面随之滑动,我们可以使用event的preventDefault来阻止这个默认行为。

  3.touchend: 当手指滑动后离开屏幕,这时就触发了touchend事件。

  4.touchcancel: 系统停止跟踪触摸时候会触发。例如在触摸过程中突然页面alert()一个提示框,此时会触发该事件,这个事件比较少用。

第二部分:四个touch对象

   1. touches,这是一个类数组对象,包含了所有的手指信息,如果只有一个手指,那么我们用touches[0]来表示。

   2. targetTouches 。 手指在目标区域的手指信息。

     3. changedTouches:最近一次触发该事件的手指信息。

     4. touchend时,touches与targetTouches信息会被删除,changedTouches保存的最后一次的信息,最好用于计算手指信息。

第三部分:实例1

  先看效果图:

  它的实现原理非常简单,就是将红色圆形的postion属性设为absolute,然后,当我们滑动它时,就触发了touchmove事件,将其Left和top设置为event的pageX和pageY即可,为保证触发中心与圆心在同一位置,只需将pageX加上width的一半,pageY加上height的一半。

  源码如下:

<!DOCTYPE html>
<html>
<head>
 <title>touchExample</title>
 <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
 <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script> 
 <style>
  #touchDiv{
   position: absolute;
   width: 50px;
   height: 50px;
   top: 20px;
   left: 20px;
   text-align: center;
   line-height: 50px;
   color:white;
   border-radius: 50%;
   background-color: red;
  }
 </style>
</head>
<body>
 <div id="touchDiv">点我</div>
 <script>
  var touchDiv = document.getElementById("touchDiv");
  var x,y;
  touchDiv.addEventListener("touchstart",canDrag);
  touchDiv.addEventListener("touchmove",drag);
  touchDiv.addEventListener("touchend",nodrag);
  function canDrag (e) {
   console.log("god开始");
  }
  function drag (e) {
   $("#touchDiv").css("left",e.touches[0].pageX-25);
   $("#touchDiv").css("top",e.touches[0].pageY-25);
  }
  function nodrag () {
   console.log("god结束");
  }
 </script>
</body>
</html>

 第四部分:实例2

  这个实例就是下拉刷新功能的实现,效果如下:

源码如下:

<!DOCTYPE html>
<html>
<head>
 <title>下拉刷新</title>
 <meta name="viewport" content="width=device-width,user-scalable=no,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0">
 <style>
  *{
   margin:0;
   padding: 0;
   font-size:15px;
  }
  .header{
   height: 50px;
   line-height: 50px;
   text-align: center;
   background-color: blue;
   color:white;
   font-size: 23px;
  }
  .drag_to_refresh{
   align-items: center;
   padding-left: 155px;
   background-color: #bbb;
   color:yellow;
   display: none;
  }
  .refresh{
   height: 50px;
   line-height: 50px;
   text-align: center;
   background-color: #bbb;
   color: green;
   display: none;
  }
  .drag{
   text-align: center;
   background-color: lightgray;
   position: relative;
   padding:20px;
   text-indent: 1em;
   line-height: 30px;
   font-size:18px;
  }
 </style>
</head>
<body>
 <div class="header">政务云</div>
 <div class="drag_to_refresh"></div>
 <div class="refresh">刷新中...</div>
 <div class="drag">电子政务云(E-government cloud)属于政府云,结合了云计算技术的特点,对政府管理和服务职能进行精简、优化、整合,并通过信息化手段在政务上实现各种业务流程办理和职能服务,为政府各级部门提供可靠的基础IT服务平台。</div>
<script>
window.onload = function () {
 var initX;
 var drag_content = document.querySelector(".drag");
 var drag_to_refresh = document.querySelector(".drag_to_refresh");
 var refresh = document.querySelector(".refresh");
 drag_content.addEventListener("touchmove",drag);
 drag_content.addEventListener("touchstart",dragStart);
 drag_content.addEventListener("touchend",dragEnd);
 function dragStart(e){
  initY = e.touches[0].pageY;
  console.log(initX);
 }
 function drag (e){
  drag_to_refresh.style.display = "block";
  drag_to_refresh.style.height = (e.touches[0].pageY - initY) + "px";
  console.log(drag_to_refresh.style.height);
  if(parseInt(drag_to_refresh.style.height)>=100){
   // 注意:因为height得到的值是px为单位,所以用parseInt解析
   drag_to_refresh.style.height = "100px";
   if(parseInt(drag_to_refresh.style.height)>80){
    drag_to_refresh.style.lineHeight = drag_to_refresh.style.height;
    drag_to_refresh.innerHTML = "松开刷新";
   }
  }
 }
 function dragEnd (e){
  if(parseInt(drag_to_refresh.style.height)>80){
   refresh.style.display = "block";
   setTimeout(reload,1000);
  }
  drag_to_refresh.style.display = "none"; 
 }
 function reload () {
  location.reload();
 }
}
</script>
</body>
</html>

以上所述是小编给大家介绍的移动端touch实现下拉刷新功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!


# touch实现下拉刷新  # android实现下拉刷新  # 安卓(Android)实现3DTouch效果  # Android判断touch事件点是否在view范围内的方法  # 30分钟搞清楚Android Touch事件分发机制  # Android中处理apple-touch-icon详解  # 浅谈Android onTouchEvent 与 onInterceptTouchEvent的区别详  # Android的Touch事件处理机制介绍  # 当我们  # 小编  # 放在  # 在此  # 只需  # 设为  # 屏幕上  # 将其  # 这是一个  # 给大家  # 只有一个  # 可以使用  # 要将  # 设置为  # 几只  # 用手指  # 所述  # 先看  # 第一部分  # 给我留言 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法  最好的网站制作公司,网购哪个网站口碑最好,推荐几个?谢谢?  bing浏览器学术搜索入口_bing学术文献检索地址  网站制作壁纸教程视频,电脑壁纸网站?  Laravel DB事务怎么使用_Laravel数据库事务回滚操作  音乐网站服务器如何优化API响应速度?  如何为不同团队 ID 动态生成多个非值班状态按钮  Python3.6正式版新特性预览  Laravel如何使用Telescope进行调试?(安装和使用教程)  头像制作网站在线观看,除了站酷,还有哪些比较好的设计网站?  如何正确下载安装西数主机建站助手?  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  如何在云服务器上快速搭建个人网站?  Laravel Artisan命令怎么自定义_创建自己的Laravel命令行工具完全指南  如何在IIS中配置站点IP、端口及主机头?  Laravel如何为API编写文档_Laravel API文档生成与维护方法  iOS UIView常见属性方法小结  Laravel怎么处理异常_Laravel自定义异常处理与错误页面教程  Laravel如何生成API文档?(Swagger/OpenAPI教程)  Python面向对象测试方法_mock解析【教程】  悟空识字如何进行跟读录音_悟空识字开启麦克风权限与录音  文字头像制作网站推荐软件,醒图能自动配文字吗?  Laravel如何创建自定义Artisan命令?(代码示例)  制作企业网站建设方案,怎样建设一个公司网站?  laravel怎么在请求结束后执行任务(Terminable Middleware)_laravel Terminable Middleware请求结束任务执行方法  JS碰撞运动实现方法详解  Laravel如何与Inertia.js和Vue/React构建现代单页应用  Laravel如何创建自定义Facades?(详细步骤)  香港服务器部署网站为何提示未备案?  Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】  如何用AI一键生成爆款短视频文案?小红书AI文案写作指令【教程】  Laravel如何生成和使用数据填充?(Seeder和Factory示例)  Laravel任务队列怎么用_Laravel Queues异步处理任务提升应用性能  活动邀请函制作网站有哪些,活动邀请函文案?  ,怎么在广州志愿者网站注册?  Laravel模型事件有哪些_Laravel Model Event生命周期详解  JavaScript如何操作视频_媒体API怎么控制播放  如何自己制作一个网站链接,如何制作一个企业网站,建设网站的基本步骤有哪些?  Laravel Seeder怎么填充数据_Laravel数据库填充器的使用方法与技巧  *服务器网站为何频现安全漏洞?  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】  使用PHP下载CSS文件中的所有图片【几行代码即可实现】  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  香港服务器网站生成指南:免费资源整合与高速稳定配置方案  如何利用DOS批处理实现定时关机操作详解  网站制作企业,网站的banner和导航栏是指什么?  Laravel中间件起什么作用_Laravel Middleware请求生命周期与自定义详解  香港服务器建站指南:外贸独立站搭建与跨境电商配置流程  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  nodejs redis 发布订阅机制封装实现方法及实例代码