JS判断手机纵向滑动

要实现该效果需要用到三个H5中的新增事件:touchstart、touchmove和touchend。

touchstart事件:当手指触摸屏幕时候触发,即使已经有一个手指放在屏幕上也会触发。

touchmove事件:当手指在屏幕上滑动的时候连续地触发。在这个事件发生期间,调用preventDefault()事件可以阻止滚动。

touchend事件:当手指从屏幕上离开的时候触发。

下面写个小例子:

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>test</title>
<script type="text/javascript">
	function load (){
		var startY = '';     // 触摸开始时的纵坐标
		var moveY = '';     // 触摸移动中的纵坐标
		// var endY = '';     // 触摸结束的纵坐标

		document.addEventListener('touchstart',touch, false);
		document.addEventListener('touchmove',touch, false);
		document.addEventListener('touchend',touch, false);
		
		function touch (event) {
			var event = event || window.event;
			var oInp = document.getElementById("inp");
			switch(event.type){
				case "touchstart":
					startY = event.touches[0].clientY;
					break;
				// case "touchend":
				// 	break;
				case "touchmove":
					event.preventDefault();
					moveY = event.touches[0].clientY;
					if (moveY > startY) {
						alert('下划');
					} else {
						alert('上划');
					}
					break;
			}
		}
	}
	window.addEventListener('load',load, false);
</script>
</head>
<body>
	<div id="inp"></div>
</body>
</html>

其实就是判断纵向的移动方向,Y变大向下,Y减小向上。

可以用JS先判断终端是否支持触摸事件:

/**
 * 触摸事件优先
 * @return {boolean} 
 */
function clickEvent() {
  return ('ontouchstart' in document.documentElement) ? 'touchstart' : 'click';
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值