主页 > 其他 > 用javascript实现网页左右滑屏事件

用javascript实现网页左右滑屏事件

2015年11月26日 用javascript实现网页左右滑屏事件无评论 阅读: 10,612 次

处理touch事件能跟踪到屏幕滑动的每根手指。

以下是四种touch事件
touchstart: //手指放到屏幕上时触发
touchmove: //手指在屏幕上滑动式触发
touchend: //手指离开屏幕时触发
touchcancel: //系统取消touch事件的时候触发,这个好像比较少用

每个触摸事件被触发后,会生成一个event对象,event对象里额外包括以下三个触摸列表

touches: //当前屏幕上所有手指的列表
targetTouches: //当前dom元素上手指的列表,尽量使用这个代替touches
changedTouches: //涉及当前事件的手指的列表,尽量使用这个代替touches
这些列表里的每次触摸由touch对象组成,touch对象里包含着触摸信息,主要属性如下:
clientX / clientY: //触摸点相对浏览器窗口的位置
pageX / pageY: //触摸点相对于页面的位置
screenX / screenY: //触摸点相对于屏幕的位置
identifier: //touch对象的ID
target: //当前的DOM元素

注意:

手指在滑动整个屏幕时,会影响浏览器的行为,比如滚动和缩放。所以在调用touch事件时,要注意禁止缩放和滚动。

1.禁止缩放
通过meta元标签来设置。

2.禁止滚动
preventDefault是阻止默认行为,touch事件的默认行为就是滚动。
event.preventDefault();

如果要使能垂直滚动,实现水平左右滑屏,可参考如下代码:

<script src="jquery-1.11.0.min.js" type="text/javascript"></script>
<script type="text/javascript">

$(function() {

var startX, startY, endX, endY,swipeX,swipeY;

document.getElementById("divADBox").addEventListener("touchstart", touchStart, false);
document.getElementById("divADBox").addEventListener("touchmove", touchMove, false);
document.getElementById("divADBox").addEventListener("touchend", touchEnd, false);
document.getElementById("divADBox").addEventListener("touchcancel", touchcancel, false);

function touchStart(event) {
var touch = event.touches[0];
startY = touch.clientY;
startX = touch.clientX ;
swipeX = true;
swipeY = true ;
}
function touchMove(event) {
var touch = event.touches[0];
endX = touch.clientX ;
endY = touch.clientY;
if(swipeX && Math.abs(endX-startX)-Math.abs(endY-startY)>0) //左右滑动
{
event.stopPropagation();//组织冒泡
event.preventDefault();//阻止浏览器默认事件
swipeY = false ;
//左右滑动
}
else if(swipeY && Math.abs(endX-startX)-Math.abs(endY-startY)<0){ //上下滑动
swipeX = false ;
//上下滑动,使用浏览器默认的上下滑动
}

}
function touchEnd(event) {

if(endX-startX  >100)//右滑

...

else if (endX-startX <100)//左滑

...

}

})

发表评论

新用户的评论需审核后才会显示;

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