H5 touchstart、touchmove、touchend 拖拽

1.获取鼠标位置

*clientX/clientY  相对浏览器窗口坐标(不会随着滚动条而变化,不包含工具栏、导航栏)

event.clientX、event.clientY就是用来获取鼠标距游览器显示窗口的长度。


*pageX/pageY page为页面的意思,页面的高度一般情况client游览器显示区域装不下,所以会出现垂直滚动条。

鼠标距离页面初始page原点的长度。

在IE中没有pageX、pageY取而代之的是event.x、evnet.y。


*offsetX/offsetY 目标事件距左上角(参考原点)长度 Chrome下,offsetX offsetY是包含边框的 ,而IE、FF是不包含边框的,如果鼠标进入到border区域,为返回负值。


2.实例代码

let oBox = document.getElementById("test");


oBox.addEventListener("touchstart",function(ev){
  let startX=ev.targetTouches[0].clientX;
  let startY=ev.targetTouches[0].clientY;
  let disX=startX-oBox.offsetLeft;
  let disY=startY-oBox.offsetTop;
  let dir="";//拖拽方向 x代表横向拖拽 y代表纵向
  function fnMove(ev){
    let curX=ev.targetTouches[0].clientX;
    let curY=ev.targetTouches[0].clientY;
    if(dir==''){
      if(Math.abs(curX-startX)>=5){
        dir='x';
      }else if(Math.abs(curY-startY)>=5){
        dir='y';
      }
    }else{
      if (dir=='x') {
        oBox.style.left=ev.targetTouches[0].clientX-disX+'px';
      }else if(dir=='y'){
        oBox.style.top=ev.targetTouches[0].clientY-disY+'px';
      }
    }
  }

  function fnEnd(){
    oBox.removeEventListener('touchmove',fnMove,false);
    oBox.removeEventListener('touchend',fnEnd,false);
  }
  oBox.addEventListener('touchmove',fnMove,false);
  oBox.addEventListener('touchend',fnEnd,false);
},false);


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值