js移动端事件底工及常用事件库详整_javascript手艺_脚本之家金沙8331网址

js移动端事件底工及常用事件库详整_javascript手艺_脚本之家金沙8331网址。一、事件基础

PC:click、mouseover、mouseout、mouseenter、mouseleave、mousemove、mousedown、mouseup、mousewheel、keydown、keyup、load、scroll、blur、focus、change…

移动端:click、load、scroll、blur、focus、change、input…TOUCH事件模型、GESTURE事件模型

TOUCH:touchstart、touchmove、touchend、touchcancel

GESTURE:gesturestart、gesturechange、gestureend

1、click:在移动端click属于单击事件,不是点击事件,在移动端的项目中我们经常会区分单击做什么和双击做什么,所以移动端的浏览器在识别click的时候,只有确定是单击后才会把它执行:

在移动端使用click会存在300ms的延迟:浏览器在第一次点击结束后,还需要等到300ms看是否触发了第二次点击,如果触发了第二次点击就不属于click了,没有触发第二次点击才属于click

下面代码是移动端模拟click时间的代码

function on{ curEle.addEventListener; } var oBox = document.querySelector; //移动端采用click存在300ms延迟 // oBox.addEventListener{ // this.style.webkitTransform = 'rotate //使用TOUCH事件模型实现点击操作 on(oBox,'touchstart',function{ //ev:TouchEvent事件 属性 type、target、preventDefault、stopPropagation、changedTouches、touches //changedTouches和touches都是手指信息的集合,touches获取到值的必要条件只有手指还在屏幕上才可以获取,所以在touchend事件中如果想获取手指离开的瞬间坐标只能使用changedTouches获取 var point = ev.touches[0]; this['strX'] = point.clientX; this['strY'] = point.clientY; this['isMove'] = false; }) on(oBox,'touchmove',function{ var point = ev.touches[0]; var newX = point.clientX, newY = point.clientY; //判断是否发生滑动,我们需要判断偏移的值是否在30PX以内 if(Math.abs>30 || Math.abs>30){ this['isMove'] = true; } }) on(oBox,'touchend',function{ if(this['isMove'] === false){ //没有发生移动 点击 this.style.webkitTransitionDuration = '1s'; this.style.webkitTransform = 'rotate'; var delayTimer = window.setTimeout{ this.style.webkitTransitionDuration = '0s'; this.style.webkitTransform = 'rotate,1000); }else{ //滑动 this.style.background = 'red'; } })

同时也可以使用fastclick.js来解决移动端click事件的300ms延迟
(github地址

2、点击、单击、双击、长按、滑动、左滑、右滑、上滑、下滑

点击和滑动(X/Y轴偏移的距离是否在30PX以内,超过30PX就是滑动)

左右滑动和上下滑动(X轴偏移的距离 > Y轴偏移的距离 = 左右滑
相反就是上下滑)

二、常用的事件库

FastClick.js :解决CLICK事件300MS的延迟

TOUCH.js:百度云移动手势库 GitHub地址

var oBox = document.querySelector; //单击 touch.on(oBox,'tap',function{ this.style.webkitTransitionDuration = '1s'; this.style.webkitTransform = 'rotate'; var delayTimer = window.setTimeout{ this.style.webkitTransitionDuration = '0s'; this.style.webkitTransform = 'rotate'; window.clearTimeout }.bind //双击 touch.on(oBox,'doubletap',function{ this.style.webkitTransitionDuration = '1s'; this.style.webkitTransform = 'rotate'; var delayTimer = window.setTimeout{ this.style.webkitTransitionDuration = '0s'; this.style.webkitTransform = 'rotate'; window.clearTimeout }.bind //长按 touch.on(oBox,'hold',function{ this.style.backgroundColor = 'red'; })

Zepto.js:被誉为移动端的小型JQ,JQ由于是在PC端使用的,所以代码中包含了大量对于ie低版本浏览器的兼容处理,而ZEPTO只应用在移动端开发,所以在JQ的基础上没有对低版本的ie进行支持

JQ中提供了很多的选择器类型及DOM操作方法,但是ZEPTO只是实现了部分常用的选择器和方法。例如:JQ中的动画方法有animate、hide、show、fadeIn、fadeOut、fadeToggle、slideDown、slideUp、slideToggle…但是在ZEPTO中只有animate

ZEPTO的源代码大小比JQ小很多

ZEPTO专门为移动端开发而诞生,所以相对于JQ来说更适合移动端:

ZEPTO的animate动画方法支持了CSS3动画的操作

ZEPTO专门的准备了移动端常用
的事件操作:tap、singleTap、doubleTap、longTap、swipe、swipeUp、swipeDown、swipeLeft、swipeRight

$.singleTap.animate({ rotate:'360deg' },1000,'linear',function(){ this.style.webkitTransform = 'rotate.on('touchstart',function.css }) $.ajax({ url:'', type:'get', dataType:'json', cache:false, success:function

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

发表评论

电子邮件地址不会被公开。 必填项已用*标注