判断页面滑动滚动方向(上,下,左,右)

博客介绍了两种判断滑动方向的方法。一是通过手指触摸事件touch判断,给出了代码及推荐地址;二是通过window.onscroll滚动实现并给出代码。还给出使用建议,pc端建议用方法二,触屏H5判断多方向建议用方法一。

1.通过手指触摸事件touch判断(转载:https://blog.youkuaiyun.com/nobug12138/article/details/70157662

1.1代码

/*判断上下滑动:*/
var startX,startY,endX,endY,distanceX,distanceY;
$('body').bind('touchstart', function(e) {
	startX = e.originalEvent.changedTouches[0].pageX;
	startY = e.originalEvent.changedTouches[0].pageY;
});
$("body").bind("touchmove", function(e) {
	//获取滑动屏幕时的X,Y
	endX = e.originalEvent.changedTouches[0].pageX;
	endY = e.originalEvent.changedTouches[0].pageY;
	//获取滑动距离
	distanceX = endX - startX;
	distanceY = endY - startY;
	//判断滑动方向
	if(Math.abs(distanceX) > Math.abs(distanceY) && distanceX > 0) {
		console.log('往右滑动');
	} else if(Math.abs(distanceX) > Math.abs(distanceY) && distanceX < 0) {
		console.log('往左滑动');
	} else if(Math.abs(distanceX) < Math.abs(distanceY) && distanceY < 0) {
		console.log('往上滑动');
		$(".div_fixed").show();
	} else if(Math.abs(distanceX) < Math.abs(distanceY) && distanceY > 0) {
		console.log('往下滑动');
		$(".div_fixed").hide();		
	}
});

1.2推荐地址:https://www.cnblogs.com/lijuntao/p/6479972.html

2.方法二通过滚window.onscroll动实现

2.1代码

<!doctype html>
<html lang="en">
	<head>
		<meta charset="UTF-8">
		<title>实现页面滚动方向检测</title>
		<script src="https://cdn.bootcss.com/jquery/1.8.3/jquery.js"></script>
		<style type="text/css"> *{ margin: 0; padding: 0; } .nav{ height: 60; position:fixed; top:0; left:0; width: 100%; height: 60px; line-height: 60px; text-align: center; font-size: 20px; background-color:gray; color: #fff; } .up{ background-color: orange; } .down{ background-color: blue; } </style>
	</head>
	<body style="height: 6000px;">
		<div class="nav">start</div>
		<div class="result"></div>

		<script>
			var $nav = $('.nav');
			var $result = $('.result');
			window.onscroll = function(e) {
				$result.html('swipeDown');
				scrollFunc();
				console.log(scrollDirection)
				if(scrollDirection == 'down') {
					$nav.html('down');
					$nav.addClass("down").removeClass("up");
				} else if(scrollDirection == 'up') {
					$nav.html('up');
					$nav.addClass("up").removeClass("down");
				}
			}
			var scrollAction = { x: 'undefined', y: 'undefined' },
				scrollDirection;
			function scrollFunc() {
				if(typeof scrollAction.x == 'undefined') {
					scrollAction.x = window.pageXOffset;
					scrollAction.y = window.pageYOffset;
				}
				var diffX = scrollAction.x - window.pageXOffset;
				var diffY = scrollAction.y - window.pageYOffset;
				if(diffX < 0) {
					// Scroll right
					scrollDirection = 'right';
				} else if(diffX > 0) {
					// Scroll left
					scrollDirection = 'left';
				} else if(diffY < 0) {
					// Scroll down
					scrollDirection = 'down';
				} else if(diffY > 0) {
					// Scroll up
					scrollDirection = 'up';
				} else {
					// First scroll event
				}
				scrollAction.x = window.pageXOffset;
				scrollAction.y = window.pageYOffset;
			}
		</script>
	</body>
</html>

3.说明

     如果在pc端建议使用方法二;如果在触屏H5需要判断多个方向建议使用方法一;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值