在iOS上有一组双指事件gesturestart、gesturechange、gestureend
gesturestart触发条件是当屏幕上有两根或以上手指并且第二根手指放在当前元素上
当两根手指移动时触发gesturechange,可以得到两个值
event.scale 缩放比例
event.rotation 旋转角度
但是这一组事件只能在iOS上使用,安桌上是没有的
在安卓上需要用touchstart、touchmove、touchend去实现

利用第一组两个点的x轴、y轴坐标求出两个点之间的距离,在得到第二组点的距离相除,得到缩放比例
利用第一组点的夹角与第二组点的夹角相减得到旋转角度
下面是我写的一个方法

function setGesture(el){var obj={}; //定义一个对象var istouch=false;var start=[];el.addEventListener("touchstart",function(e){if(e.touches.length>=2){  //判断是否有两个点在屏幕上istouch=true;start=e.touches;  //得到第一组两个点obj.gesturestart&&obj.gesturestart.call(el); //执行gesturestart方法};},false);document.addEventListener("touchmove",function(e){e.preventDefault();if(e.touches.length>=2&&istouch){var now=e.touches;  //得到第二组两个点var scale=getDistance(now[0],now[1])/getDistance(start[0],start[1]); //得到缩放比例,getDistance是勾股定理的一个方法var rotation=getAngle(now[0],now[1])-getAngle(start[0],start[1]);  //得到旋转角度,getAngle是得到夹角的一个方法e.scale=scale.toFixed(2);e.rotation=rotation.toFixed(2);obj.gesturemove&&obj.gesturemove.call(el,e);  //执行gesturemove方法};},false);document.addEventListener("touchend",function(e){if(istouch){istouch=false;obj.gestureend&&obj.gestureend.call(el);  //执行gestureend方法};},false);return obj;
};
function getDistance(p1, p2) {var x = p2.pageX - p1.pageX,y = p2.pageY - p1.pageY;return Math.sqrt((x * x) + (y * y));
};
function getAngle(p1, p2) {var x = p1.pageX - p2.pageX,y = p1.pageY- p2.pageY;return Math.atan2(y, x) * 180 / Math.PI;
};

调用方法

    var box=document.querySelector("#box");var boxGesture=setGesture(box);  //得到一个对象boxGesture.gesturestart=function(){  //双指开始box.style.backgroundColor="yellow";};boxGesture.gesturemove=function(e){  //双指移动box.innerHTML = e.scale+"<br />"+e.rotation;box.style.transform="scale("+e.scale+") rotate("+e.rotation+"deg)";//改变目标元素的大小和角度};boxGesture.gestureend=function(){  //双指结束box.innerHTML="";box.style.cssText="background-color:red";};

这样在iOS和安卓下都可以用这一个方法

js移动端双指缩放和旋转相关推荐

  1. android js 双指事件,JS实现移动端双指缩放和旋转方法

    JS实现移动端双指缩放和旋转方法 发表于 2020-2-25|标签javascript js实现移动端双指缩放和旋转,具体代码如下所示: ```javascript var initHeading = ...

  2. 移动端双指缩放、旋转

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  3. android js 双指事件,JS实现移动端双指缩放和旋转方法_旧址_前端开发者

    var initHeading = 0; var rotation = 0; var lastTime; function setGesture(el){ var obj={}; var istouc ...

  4. android旋转缩放布局,Android学习笔记(一):双指缩放及旋转计算

    请尊重原创,转载请注明来源. Android中,很多时候会用到手势判断,判断用户当前的手势是移动,还是双指缩放/旋转,关于Android中的手势和gesturedetector,已经有很多人进行过研究 ...

  5. 点击图片放大,实现移动端双指缩放,单指拖拽功能

    记录一下最近项目中用到的点击图片出现一个遮罩层,同时放大图片显示,移动端可双指缩放图片并单指拖拽图片.再次点击遮罩层透明区域,遮罩层消失 一.实现效果: 页面原图展示: 点击图片后: 二.代码实现: ...

  6. 移动端双指缩放事件(原生),e.originalEvent.touches

    <!DOCTYPE html> <html lang="en"> <head>   <meta charset="UTF-8&q ...

  7. html5 双指缩放图片,js实现移动端图片预览:手势缩放, 手势拖动,双击放大......

    查看示例效果: 一.功能介绍 图片预览主要有以下几个功能点组成:监听图片点击事件,进入图片预览模式 自定义手势事件, (双指缩放,滑动,双击...) 监听图片手势事件,通过 transform-mat ...

  8. 移动端js实现双指缩放,单指拖动图片

    1.可通过修改图片的宽高来缩放图片 2.可通过修改transform进行缩放图片,使用transform默认的作用中心是元素的中心点,需要通过transform-origin:0 0调整作用中心点 3 ...

  9. android js 双指事件,双指缩放的实现方式对比

    一.双指缩放的实现方式 方式一: 根据手势计算scale重新render生成视图 实现逻辑 (1) 通过Web端手势库 AlloyFinger 获取元素onPinch事件的双指缩放比例scale. ( ...

最新文章

  1. 【Win32汇编】数组累加
  2. 牛逼轰轰!GitHub 上 Star 量最高的 5 个机器学习项目
  3. ActionScript 3.0 概要
  4. FTPClient.listFiles() 放到linux上,返回值为null或数组长度为0
  5. MySQL主从延时这么长,要怎么优化?
  6. mac上实时运行linux系统,使用Darling模拟器实现在Linux上运行Mac OS X程序
  7. orb特征描述符 打开相机与图片物体匹配
  8. 架构师该不该写代码?
  9. Intent直接跳转到Fragment
  10. 4418linux内核源码,4418开发板Uboot内核文件系统编译脚本分析
  11. 2022最新oneNav导航系统源码全开源版本下载总裁导航
  12. 安卓开发基础知识3(国内深度摄像头方案)
  13. 使用https请求接口报:javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated”异常的问题处理
  14. php连接数据库的留言板,PHP+MySql实现简单的留言板功能
  15. 深度学习——核心思想
  16. MTK hall霍尔传感器
  17. sealos快速部署k8s集群
  18. 支付宝小程序控制硬件②】 全网首篇,个人支付宝小程序控制智能硬件esp8266,从设计电路到设计协议控制两盏LED灯调节亮度。
  19. 考研总结--北邮网研院上岸
  20. 计及源荷不确定性的综合能源生产单元运行调度与容量配置优化研究(Matlab代码实现)

热门文章

  1. 搭档之家:第五次“联姻”?中信建投、中信证券携手涨停 网友:是并购的味道
  2. 下列关于虚拟存储器的叙述中,正确的是( )
  3. Qt实战案例(13)(序)——以QToolButton为例介绍Qt界面外观设计
  4. Win10家庭版升级到专业版出现的声音消失问题
  5. Java中的tiles_tiles框架简单教程
  6. IDEA maven配置教程
  7. Maven配置文件修改
  8. Web前端基础——HTML笔记
  9. WAL模式 Android,SQLite 数据库 WAL 工作模式原理简介
  10. 关于wprintf无法打印unicod中文字符的解决方法