<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>移动端双指缩放、旋转</title>

<meta name="viewport" content="width=device-width, user-scalable=no, initial-scale=1.0,maximum-scale=1.0">
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">

<style>
#div1{
width:200px;
height:200px;
background: red;
margin: 50px auto;
font-size: 40px;
color: #fff;
}
</style>
<script>
function a2d(n){
return n*180/Math.PI;
}
document.addEventListener('DOMContentLoaded',function(){
var oDiv=document.querySelector('#div1');

var x=0;
var y=0;
var d=0;
var s=1;

oDiv.addEventListener('touchstart',function(ev){
var oldX=x;
var oldY=y;
var oldD=d;
var oldS=s;

function getT(ev){
var x1=ev.targetTouches[0].pageX;
var y1=ev.targetTouches[0].pageY;

var x2=ev.targetTouches[1].pageX;
var y2=ev.targetTouches[1].pageY;

var x=(x1+x2)/2;
var y=(y1+y2)/2;

return {x:x, y:y};
}
function getD(ev){
var x1=ev.targetTouches[0].pageX;
var y1=ev.targetTouches[0].pageY;

var x2=ev.targetTouches[1].pageX;
var y2=ev.targetTouches[1].pageY;

var x=x2-x1;
var y=y1-y2;

return a2d(Math.atan2(y,x));
}
function getS(ev){
var x1=ev.targetTouches[0].pageX;
var y1=ev.targetTouches[0].pageY;

var x2=ev.targetTouches[1].pageX;
var y2=ev.targetTouches[1].pageY;

var a=x1-x2;
var b=y1-y2;
return Math.sqrt(a*a+b*b);
}

if(ev.targetTouches.length==2){
var downX=getT(ev).x;
var downY=getT(ev).y;
var downD=getD(ev);
var downS=getS(ev);
}

document.addEventListener('touchmove',function(ev){
if(ev.targetTouches.length==2){
x=oldX+getT(ev).x-downX;
y=oldY+getT(ev).y-downY;
d=oldD+downD-getD(ev);
s=oldS*getS(ev)/downS;

oDiv.style.WebkitTransform='translate('+x+'px,'+y+'px) scale('+s+') rotate('+d+'deg)';
}
},false);

ev.preventDefault();
},false);
},false);
</script>
</head>
<body>
<div id="div1">DIV</div>
</body>
</html>

转载于:https://www.cnblogs.com/zhoufuwei/p/7647203.html

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

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

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

  2. 微信小程序单指拖拽和双指缩放旋转

    前言 小程序单指拖拽和双指操作是一个比较常用的功能,效果如下图 实现这三个功能,主要用三个触摸事件touchstart.touchmove.touchend <view style=" ...

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

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

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

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

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

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

  6. js移动端双指缩放和旋转

    在iOS上有一组双指事件gesturestart.gesturechange.gestureend gesturestart触发条件是当屏幕上有两根或以上手指并且第二根手指放在当前元素上 当两根手指移 ...

  7. linux触摸屏两指缩放_自定义TextView实现单指拖动,双指缩放旋转

    由于在网上找到的教程中双指旋转需要通过获取手指落点相对于父控件的坐标点来计算,所以采用重写RelativeLayout的方法,如果有其他的方法不需要重写RelativeLayout,希望可以和我联系 ...

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

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

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

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

最新文章

  1. 從明天起做個幸福的人...
  2. MariaDB/MySQL备份和恢复(三):xtrabackup用法和原理详述
  3. Java 8系列之Stream的强大工具Collector
  4. php mysql读取数据_PHP MySQL 读取数据
  5. (六)企业部分之jdk
  6. 运维工程师要失业了?抛开噱头与调侃,闲聊我心中的运维!
  7. Microsoft 帐户异常登录活动,QQ邮箱代收hotmail邮件不成功
  8. 【NOIP2000】【Luogu1019】单词接龙
  9. 解决atomikos在oracle应用中的XA事务异常 Error in recovery
  10. 复制粘贴之后出现问号怎么办_网页没办法复制粘贴?老司机传授这3招太赞了,全网任意免费复制...
  11. Problem B: 取石子
  12. Java读写excel文件代码
  13. Spring官方文档(中文版!!!)
  14. 51单片机驱动继电器模块点灯
  15. 业务需求分析师Business Analysist(BA)的职业发展之路
  16. 锐龙r5 3500u核显相当于什么显卡 r5 3500u相当于什么处理器
  17. 英雄联盟2017赛季什么时候结束?
  18. android虹软人脸识别简书,Android 用虹软SDK做人脸识别
  19. C++ 第八节数据结构 第七节 ——二叉搜索树 AVL树 红黑树(底层原理图+模拟实现)
  20. Android APPT2 报异常处理

热门文章

  1. 在ASP.NET Core MVC中构建简单 Web Api
  2. keepalived热备 keepalived+LVS Haproxy
  3. 如何设计真正高性能高并发分布式系统(万字长文)
  4. 一次服务器CPU占用率高的定位分析
  5. 面试问:Kafka 为什么速度那么快?
  6. 人类史上首张黑洞照片发布!
  7. http如何像tcp一样实时的收消息?
  8. Java:写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z。
  9. 11MYSQL:慢查询以及优化步骤
  10. STEMA 考试每日一练 2020.12.7 - 2021.11.30 试题及答案 - 刷题