移动端-移动端事件

移动端事件

  • 移动端事件
    • 事件类型
    • touch 对应的event 对象
    • 触摸位置
    • ios 手劳事件(两指触发)
    • 安卓多指事件封装
    • 案例---滑动图片

移动端事件

事件类型

  1. touchstart :触换开始(于指放在触摸屏上)
  2. touchmove :拖动(手指在触摸屏上移动)
  3. touchend :触摸结柬(手指从触摸屏上移开)
  4. touchenter:移动的手指进入一个dom元素
  5. touchleave :移动的手指高开一个dom元素。
  6. touchcancel,是在拖动中断时候触发。

touch 对应的event 对象

  1. touches: 表示当前跟踪的触摸操作的touch对象的属性
  2. targetTouches;表示特定事件目标的Touch 对象的数组。
  3. changeTouches: 表示从上一次触摸以来,发生了改变的touch 对象的数组。

触摸位置

  1. clientxclienty 属性:相对于视口的坐标:
  2. identifier: 标识触摸的唯一id;
  3. pagexpageY: 相对于页面的坐标:
  4. screenXscreenY: 相对于屏幕的坐标:
  5. radiusxradiusY: 能够包围用户和触摸平面的接触面的最小椭圆的水平轴(X轴)半径和重直轴(Y轴)半径:
  6. rotationAngle :这个属性和Touch.radiusxTouch.radiusy 一起,描述了用户和触摸平面的接触面。
  7. force: 返回这个Touch对象对应的手指挤压触换平面的压力大小,从0.0(没有压力)到1.0(最大压力)的浮点数.
  8. target: 触摸的DOH 节点目标。

ios 手劳事件(两指触发)

  1. gesturestart: 当一个手指已经按在屏幕上,另一个手指又触摸屏幕的时候触发。类似于touchstart 的作用样:
  2. gesturechange: 当触换屏事的任何一个手指的位置发生变化的时候触发。
  3. gestureend; 当任何一个手指从屏幕上面移开时触发。

安卓多指事件封装

多指事件封装参考

案例—滑动图片


<html>
	<head>
		<meta charset="utf-8">
		<title>title>
		<meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />
		<style type="text/css">
			* {
				margin: 0;padding: 0;
			}
			body {padding: 50px;}
			.outer {
				height: 384px;
				width: 300px;
				border: 1px solid red;
				overflow: hidden;
			}
		style>
	head>
	<body>
		<div class="outer">
			<img src="./pic.jpg" alt="" class="inner">
		div>
	body>
	<script type="text/javascript">
		var _outer = document.querySelector(".outer");
		var _inner = document.querySelector(".inner");
		// 获取dom元素
		// 给outer 添加touchstart 手指开始触摸,touchend 手指结束触摸,touchmove 手指移动中
		_outer.addEventListener("touchstart",startHd);
		_outer.addEventListener("touchmove",moveHd);
		_outer.addEventListener("touchend",endHd);
		
		// 移动图片 transform 可以移动
		// 移动多少?touchmove,与,touchstart的差值就可以了
		var startX = 0,
			moveX = 0,
			nowX = 0;
		// 计算当达到最又边时,华东的值达到最小值
		
		
		function startHd(e) {
			startX = e.targetTouches[0].pageX;
			// console.log("start",e,"第一根手指",e.targetTouches[0]);
		}
		function moveHd(e) {
			// console.log("move",e);
			moveX = e.targetTouches[0].pageX;
			_inner.style.transform = `translate(${moveX - startX + nowX}px,0)`;
		}
		function endHd(e) {
			// console.log("end",e);
			nowX = moveX - startX + nowX;
			if(nowX > 0) {
				nowX = 0;
				_inner.style.transform = `translate(0,0)`;
			}
			let min = _inner.offsetWidth * -1 + _outer.offsetWidth;
			if(nowX <= min) {
				nowX = min;
				_inner.style.transform = `translate(${min}px,0)`;
			}
		}
	script>
html>

你可能感兴趣的:(JavaScript,移动端)