移动端手指事件和手机事件:


1.手指事件:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,user-scalable=no" />
		<title></title>
		<style>
			#box{
				width: 200px;
				height: 200px;
				background: green;
				color: #fff;
			}
		</style>
	</head>
	<body>
		<div id="box"></div>
		<script>
			/*
			 * touchstart			手指按下事件
			 * touchmove			手指移动事件
			 * touchend				手指离开事件
			 * 
			 * 注意:
			 * 		1、这些事件只能用事件监听函数来添加,不能用on添加
			 * 		2、移动端当中就不要再用鼠标的事件了
			 * 		3、移动端的事件会触发浏览器的默认行为,所以在调用事件的时候要把这个默认行为给阻止了
			 */
			
			document.addEventListener('touchstart',function(ev){
				ev.preventDefault();
			});
			
			var box=document.getElementById("box");
			
			//相当于mousedown
			box.addEventListener('touchstart',function(){
				this.innerHTML='手指按下了';
			});
			
			//相当于mousemove
			box.addEventListener('touchmove',function(){
				this.innerHTML='手指移动了';
			});
			
			//相当于mouseout
			box.addEventListener('touchend',function(){
				this.innerHTML='手指离开了';
			});
		</script>
	</body>
</html>
2.touches当前屏幕中的手指列表:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,user-scalable=no" />
		<title></title>
		<style>
			#box{
				width: 200px;
				height: 200px;
				background: green;
				color: #fff;
				font-size: 50px;
			}
		</style>
	</head>
	<body>
		<div id="box"></div>
		<script>
			/*
			 * touches			当前屏幕中的手指列表
			 * 
			 */
			var box=document.getElementById("box");
			
			//相当于mousedown
			box.addEventListener('touchstart',function(ev){
				//console.log(ev.touches);
				this.innerHTML=ev.touches.length;
			});
		</script>
	</body>
</html>
3.重力加速度事件:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,user-scalable=no" />
		<title></title>
		<style>
			#box{
				width: 200px;
				height: 200px;
				background: green;
				color: #fff;
				position: absolute;
				left: 50px;
			}
		</style>
	</head>
	<body>
		<div id="box"></div>
		<script>
			/*
			 * devicemotion						重力加速度事件
			 * accelerationIncludingGravity		重力加速度对象
			 * 		他身上有三个轴
			 * 			x:手机的宽
			 * 			y:手机的长
			 * 			z:手机的厚
			 * 
			 * 注意:这个事件只能放在window身上
			 */
			
			var box=document.getElementById("box");
			
			//相当于mousedown
			window.addEventListener('devicemotion',function(ev){
				var motion=ev.accelerationIncludingGravity;
				//console.log(ev.touches);
				var x=parseFloat(getComputedStyle(box).left);
				box.style.left=x+motion.x+'px';
			});
		</script>
	</body>
</html>
4.手机倾斜事件:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,user-scalable=no" />
		<title></title>
		<style>
			#box{
				width: 200px;
				height: 200px;
				background: green;
				color: #fff;
			}
		</style>
	</head>
	<body>
		<div id="box"></div>
		<script>
			/*
			 * deviceorientation			手机倾斜事件
			 * 		ev.beta					x轴的倾斜
			 * 		ev.gamma				y轴的倾斜
			 * 		ev.alpha				z轴的倾斜
			 * 
			 * 注意:这个事件只能放在window身上
			 */
			
			var box=document.getElementById("box");
			
			//相当于mousedown
			window.addEventListener('deviceorientation',function(ev){
				var motion=ev.accelerationIncludingGravity;
				//console.log(ev.touches);
				box.innerHTML=`x轴倾斜:${ev.beta.toFixed(1)}</br>y轴倾斜:${ev.gamma.toFixed(1)}</br>z轴倾斜:${ev.alpha.toFixed(1)}`;
			});
		</script>
	</body>
</html>
5.手机摇一摇:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,user-scalable=no" />
		<title></title>
	</head>
	<body>
		<script>
			var lastRange=0;		//上一次摇晃的幅度
			var isShake=false;		//决定用户到底有没有大幅度摇晃
			
			window.addEventListener('devicemotion',function(ev){
				var motion=ev.accelerationIncludingGravity;
				var x=Math.abs(motion.x);
				var y=Math.abs(motion.y);
				var z=Math.abs(motion.z);
				
				var range=x+y+z;			//当前摇晃的幅度
				if(range-lastRange>100){
					//这个条件成立说明用户现在已经在大幅度摇晃
					isShake=true;
				}
				
				if(isShake && range<50){	
					//这个条件成立,说明用户摇晃的幅度很小了就要停了
					alert('摇一摇了');
					isShake=false;
				}
			});
		</script>
	</body>
</html>
6.多指旋转:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,user-scalable=no" />
		<title></title>
		<style>
			#box{
				width: 200px;
				height: 200px;
				background: green;
				color: #fff;
				font-size: 50px;
			}
		</style>
	</head>
	<body>
		<div id="box">kaivon</div>
		<script>
			/*
			 * gesturestart				两个或者两个以上手指按下
			 * gesturechange			两个或者两个以上手指变换
			 * gestureend				两个或者两个以上手指离开
			 * 
			 * ev.rotation				这个值是start与move的旋转度数的差值
			 */
			
			//一定要阻止浏览器的默认行为
			document.addEventListener('touchstart',function(ev){
				ev.preventDefault();
			});
			document.addEventListener('touchmove',function(ev){
				ev.preventDefault();
			});
			
			var box=document.getElementById("box");
			
			
			var startDeg=0;		//上次旋转后的角度
			//两个或者两个以上手指按下
			box.addEventListener('gesturestart',function(){
				this.style.background='blue';
				
				//rotate(90deg)
				if(this.style.transform){
					startDeg=parseFloat(this.style.transform.split('(')[1]);
				}
			});
			
			//两个或者两个以上手指变换
			box.addEventListener('gesturechange',function(ev){
				/*this.style.background='black';
				this.innerHTML=ev.rotation;*/
				
				this.style.transform='rotate('+(ev.rotation+startDeg)+'deg)';
			});
			
			//两个或者两个以上手指变换
			box.addEventListener('gestureend',function(){
				this.style.background='green';
			});
		</script>
	</body>
</html>
7.多指缩放:
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<meta name="viewport" content="width=device-width,user-scalable=no" />
		<title></title>
		<style>
			#box{
				width: 200px;
				height: 200px;
				background: green;
				color: #fff;
				font-size: 50px;
				position: absolute;
				left: 70px;
				top: 100px;
			}
		</style>
	</head>
	<body>
		<div id="box">kaivon</div>
		<script>
			/*
			 * gesturestart				两个或者两个以上手指按下
			 * gesturechange			两个或者两个以上手指变换
			 * gestureend				两个或者两个以上手指离开
			 * 
			 * ev.rotation				这个值是start与move的旋转度数的差值
			 * ev.scale					这个值是start与move的缩放倍数的差值
			 */
			
			//一定要阻止浏览器的默认行为
			document.addEventListener('touchstart',function(ev){
				ev.preventDefault();
			});
			document.addEventListener('touchmove',function(ev){
				ev.preventDefault();
			});
			
			var box=document.getElementById("box");
			
			
			var startScale=1;		//上次缩放后的角度
			//两个或者两个以上手指按下
			box.addEventListener('gesturestart',function(){
				this.style.background='blue';
				
				//rotate(90deg)
				if(this.style.transform){
					startScale=parseFloat(this.style.transform.split('(')[1]);
				}
			});
			
			//两个或者两个以上手指变换
			box.addEventListener('gesturechange',function(ev){
				/*this.style.background='black';
				this.innerHTML=ev.rotation;*/
				
				var sc=ev.scale*startScale;
				sc=sc<0.5?0.5:sc;
				
				this.style.transform='scale('+sc+')';
			});
			
			//两个或者两个以上手指变换
			box.addEventListener('gestureend',function(){
				this.style.background='green';
			});
		</script>
	</body>
</html>
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Sun Peng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值