移动端事件
一:移动端事件、
touchstart:手指按下
touchmove:手指移动
touchend:手指离开
二、移动端事件和PC事件的不同
PC上的事件比移动端的事件略慢,大概300ms左右
像素比:window.devicePixelRatio
三、事件绑定用第二种事件绑定方式绑定
ev.addEventListener('touchstart',fn)
四、移动端事件的问题
1、点透:当上层元素发生点击的时候,下层元素也有点击(焦点)特性,在300ms之后,如果上册元素消失或者隐藏目标点就会漂移到下层元素身上,就会触发点击行为。
解决方法:1.下层不要使用有焦点特性的元素(不能解决根本问题)、2.阻止PC事件,缺点是阻止之后pc的事件都不能用了比如a的跳转,需要手动添加事件
document.addEventListener('touchstart',function(ev){
ev.preventDefault()
})
五、在移动端阻止pc事件的优缺点
1、解决IOS10下面meta禁止用户缩放无效问题。
2、解决IOS10下面溢出不隐藏的问题。
3、禁止系统默认的滚动条
4、阻止回弹效果
5、禁止长按选中文字、图片、菜单
6、点透问题
7、阻止了焦点元素(例如input)进行交互
解决办法:
var ipt = document.getElementsByTagName('input')[0]
ipt.addEventListener('touchstart',function(ev){
ev.stopPropagetion();
})
六、移动端的事件对象
1.当给某个元素加上了事件绑定函数之后,事件函数默认的第一个参数就是事件对象
2.当用户在浏览器下触发了某个行为的时候,事件对象会记录用户操作时的一些信息:
touches:当前位于 屏幕 上的所有手指的一个列表;
targetTouches:位于当前 DOM元素 上的手指的一个列表
changeTouches:涉及当前事件的手指的一个列表