移动端事件详解

今天来总结一下移动端事件的用法和注意事项。废话就不多说了,直接上吧!
一、移动端基础事件

1.基础事件

touchstart 手指按下时触发
touchmove 手指移动时触发
touchend 手指抬起时触发

2.使用方法

我们在使用上面三个事件时,要用js 的事件绑定方式去使用(addEventListener()), JQ 的 on() 等绑定事件不起作用,例如:

var body = document.querySelector("body");
body.addEventListener("touchstart",start);

function start(e) {
  console.log("按下手指");
  console.log(e)
}

3.移动端事件对象

移动端中通过事件对象我们能获取很多信息。比如,手指点击的坐标,手指一动的距离,点击屏幕的手指个数等等。

tocuhes 当前手指触屏的个数

targetTouches 位于当前DOM 元素上的手指的一个列表

changeTocuhes 涉及当前事件的手指的一个列表

clientX 触摸目标在视口中的x坐标

pageX 触摸目标在页面中的x坐标

screenX 触摸目标在屏幕中的x坐标

 <div class="warp"></div>

 var div = document.querySelector(".warp");

div.addEventListener("touchstart",function(e){
   console.log(e)
   div.innerHTML =e.targetTouches.length;
});

如果要获取触摸点的坐标,要这样做:

div.addEventListener("touchstart",function(e){
   var tager = e.touches[0] // 获取第一个触点
   div.innerHTML = tager.pageX;
});

4.注意事项

①使用touchend 可以消除点击事件的300ms 延迟,click 事件是有300ms 延迟的。(可以解决点透问题)

 div.addEventListener("click",click);
 div.addEventListener("touchend",end);

function click() {
  console.log("点击事件")
}

function end() {
   console.log("抬起手指")
}
// 上面结果, end 函数会先触发,click 事件后触发, 

②在ios10下面,user-scalable=no, 禁止用户缩放不起作用,使用阻止pc默认事件就会生效。

document.addEventListener("touchstart",function(e){
   e.preventDefault();
});

③阻止默认事件还会解决IOS10 下使用 overflow:hidden 失效问题

④阻止默认事件还会 禁止系统默认的滚动条,阻止橡皮筋效果

⑤阻止默认事件还会 禁止长按选中文字,选中图片,系统默认菜单。

二、移动端陀螺仪

1.重力感应 (事件是绑定在window 上的)
devicemotion 事件
事件对象(主要)
acceration : 一个包含x,y,z 的属性对象,在不考虑重力的情况下,告诉你在每个方向上的加速度。
accelerationIncludingGravity : 一个包含x,y,z 的属性对象,在考虑z轴自然重力加速度的情况下,告诉你在每个方向上的加速度。
rotationRate : 一个包含表示方向的 alpha、beta 和 gamma属性对象。

    var div = document.querySelector('div');
     window.addEventListener('devicemotion',function(e){
      console.log(e)
        var motion = e.accelerationIncludingGravity;
        var x = motion.x;
        var y = motion.y;
        var z = motion.z; // 安卓显示正直,ios显示负值

        div.innerHTML = "x: " + x;
        div.innerHTML += "<br/>y: " + y;
        div.innerHTML += "<br/>z: " + z;
     })

2.横竖屏检测
orientationchange 事件
其中 window.orientatio 包含了设备横竖屏转动时的几个值:
0:表示肖像模式
90:表示向左旋转的横向模式
-90:表示向右旋转的横向模式

window.addEventListener('orientationchange',function(e){
     alert(window.orientation);
 })

3.检测手机旋转
deviceorientation 事件
事件对象属性:
alpha : 在围绕z轴旋转时,y轴的度数差,是一个介于0到360之间的浮点数
beta : 在围绕x轴旋转时,z轴的度数差,是一个介于-180到180之间的浮点数
gamma : 在围绕y轴旋转时,z轴的度数差,是一个介于-90到90之间的浮点数

 var p = document.querySelector('p');
    window.addEventListener('deviceorientation',function(e){    
       body.innerHTML = "Z: " + e.alpha;  // 手机z轴旋转角度
    })
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值