html拖拽手势,h5实现手势操作放大缩小拖动等

最近开发遇到了这个需求,使用vue开发h5加一个手势放大缩小的功能,移动端的手势操作用原生的写法太麻烦,而且体验还不好,所以从github找到一个hammer.js的一个手势操作插件。

官方文档地址:http://hammerjs.github.io/

文档写的一般的,看的不怎么明白,又从网上查了一些别人做过的案例,这个插件可以实现功能,但是一些逻辑还是得自己写。

实现手势缩放用到了插件的pinch翻译就是捏的意思,使用也遇到一些坑。

1、首先下载这个插件

cnpm install hammerjs --save

2、然后在使用的组件页面引入

import Hammer from 'hammerjs'

3、初始化插件,找到指定的dom节点。手势缩放默认是禁调的,需要设置开启。

4、手势缩放在pinch回调函数里面的e的对象里面封装了一个scale的属性,就是代表这个缩放大小,但是有一个问题,每次缩放完毕之后,再次缩放scale就会重置为1所以需要判断是不是第一次缩放,记录缩放之后的值,以相乘的方式进行比例缩放,测试之后是可行的。更多功能参考官方文档。

5、拖动用到了pan,拖动有向上拖动panup,向下拖动pandown,向左拖动panleft,向右拖动panright,拖动开始panstart,拖动结束panend,拖动通过e.deltaX,e.deltalY来计算移动的距离,我用的是css3的translate,拖动结束记录结束的delatX delatY,在拖动的时候当前的的delatX delatY加上记录的delatX delatY,这样就能实现无缝拖动。拖动不能影响缩放,已经缩放,在做东的时候也要把缩放加上。

6,双击,连续点击两次doubletap之后,还原拖动和缩放。

this.$nextTick(()=>{

let x=0;

let y=0;

let _node=this.$refs.main.querySelector('#pageContainer'+PageNumber);

let hand=new Hammer(_node);

hand.get('pinch').set({enable:true});

hand.on("pinchmove pinchstart pinchin pinchout",e => {//缩放

if(e.type == "pinchstart"){

this.scaleIndex = this.scaleCount || 1;

}

this.scaleCount= this.scaleIndex*e.scale;

_node.style.transform = "scale(" + (this.scaleIndex * e.scale)+ ")"

});

hand.on('doubletap',(e)=>{//双击

x=0;

y=0;

this.scaleCount=1;

_node.style.transform = "translateX(0px) translateY(0px) scale(1)";

})

hand.on('panright panleft panup pandown',(e)=>{//拖动

_node.style.transform="translateX("+(e.deltaX+x)+"px)"+"translateY("+(e.deltaY+y)+"px)"+"scale(" + (this.scaleCount * e.scale)+ ")"

})

hand.on('panend',(e)=>{

x=e.deltaX+x;

y=e.deltaY+y;

})

})

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/338108.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

selenium持续集成_使用Selenium进行Spring Boot集成测试

selenium持续集成Web集成测试允许对Spring Boot应用程序进行集成测试,而无需进行任何模拟。 通过使用WebIntegrationTest和SpringApplicationConfiguration我们可以创建加载应用程序并在正常端口上侦听的测试。 Spring Boot的这一小增加使使用Selenium WebDriver创建…

这才是你想要的C语言学习路线!

点击上方蓝字关注我,了解更多咨询作为一门古老的编程语言,大家熟知它不仅是因为拥有48年的发展历程,更主要还是因为当下大部分程序员走入编程世界第一个学习的语言就是C语言。而近年来高速发展的物联网和智能设备,又把C语言推向了…

html流式布局插件,Jquery瀑布流网格布局插件

插件描述:一款简单且高度可定制的jQuery瀑布流网格布局插件。通过该瀑布流网格插件你可以动态添加和删除各种尺寸的图片,定义图片宽度,设置网格的列数,或使用流式布局方式,甚至还可以通过URL动态添加图片。使用该瀑布流…

mongodb上限集合_用Java创建MongoDB上限集合

mongodb上限集合在MongoDB中,可以以循环方式将文档的插入顺序保留到集合中。 这些类型的集合在MongoDB中称为上限集合。 MongoDB文档描述了上限集合: 上限集合是固定大小的集合,它们支持高吞吐量操作,这些操作根据插入顺序来插入…

编程语言:C语言与Java的细致对比,你知道选谁了吗?

点击上方蓝字关注我,了解更多咨询1.Java与C语言各自的优势C语言是面向过程的语言,执行效率高;Java是面向对象的语言,执行效率比C语言低。C语言最关键的是比Java多了指针,这也说明了Java的健壮性,还有Java的多线程机制使…

ajax实现表单验证 html,Ajax+ajax做的表单验证

//Ajx实现异步示例,blur实现失去焦点触发jQuery(#formname).blur(check);function check(){alert("开始执行Ajax");//判断用户是否存在var formname jQuery("#formname").val();if(formname""){jQuery(#msgName).html(表单名称不能为…

java ee maven_针对新手的Java EE7和Maven项目–第8部分

java ee maven第一部分 , 第2部分 , 第3部分 , 第4部分 , 第5部分 , 第6部分 , 第7部分 第8部分 自上一篇文章以来,这一系列教程已经有很长时间了。 是时候恢复并在我们的简单项目中添加…

Python、Perl 垫底,C语言才是最环保的编程语言

点击上方蓝字关注我,了解更多咨询提到编程语言,人们第一时间想到的无非是:哪个编程语言简单易学,亦或是最挣钱等。但是编程语言功耗问题却被很多人忽视。那么作为程序员的我们如何选择编程语言,使其以低能耗高功效地工…

改变数据类型的装饰器_用装饰器改变收藏

改变数据类型的装饰器装饰图案 自从第一次学习编程设计模式以来,装饰器模式一直是我的最爱。 在我看来,这是一个很新颖的想法,比其他想法有趣得多。 不要误会我的意思,其他大多数人也引起了我的注意,但没有什么比装饰器…

khoury计算机科学学院,东北大学Open House中国站

东北大学Open House中国站 -10月26日北京 & 10月27日上海东北大学向金吉列留学的学生发来诚挚邀请,欢迎您的学生前来参加东北大学于 10 月 26 日(周六)在北京 和 10 月 27 日(周日)在上海 举办的东北大学 Open House 教育展。在这两个 Open House 教育展上&…

jvm jstat_使用jstat报告自定义JVM指标集

jvm jstat我一直缺少在JStat中配置自定义标头的可能性 。 当然,有很多预定义的数据集,但是如果我们可以创建自己的数据集,那就更好了。 正如您可能已经设计的那样,我正在写这篇文章,因为这样的功能当然是可用的:)不幸的…

知识分享:值得学习的C语言经典开源项目

点击上方蓝字关注我,了解节气咨询听上去有些荒谬,C语言的产生竟然源于一个失败的项目。1969年,通用电气、麻省理工学院和贝尔实验室联合创立了一个庞大的项目——Multics工程。该项目的目的是创建一个操作系统,但显然遇到了麻烦&a…

计算机主机中网卡的作用,计算机硬件组成及作用

计算机硬件组成及作用今天百分网小编介绍一下电脑各组件,加深一下理解,让还不太懂的人可以对自己的电脑有一个整体的了解,希望对你有所帮助!一、电源电源是电脑最重要的部件,相当于人体的心脏,向所有的零部件输送血液&…

oracle idm_批准Oracle IDM中的特定Web服务

oracle idm关于Web服务端点的快速发布,OIM和SOA在与批准有关的场景中使用了Web服务端点- 基本内容,但对于初学者可能有用 。 Oracle IDM与SOA套件集成并利用其提供与批准相关的功能(说实话,SOA非常丰富,并且也被用作W…

C语言编程笔记:关于 for循环 的那些不为人知的秘密

点击上方蓝字关注我,了解更多咨询好吧,也许你认为我在写一篇如何使用for循环的文章,,,,首先,我想说无论是学习C语言还是学习java的同学都能从此文中获益,还有,你确定你会…

chrome for mac html5,javascript – Mac上的Chrome浏览器问题

我一直在寻找很长一段时间,因为画布元素上的旋转矩形的绘制,擦除和重绘在Mac上的谷歌浏览器中不起作用.我需要这个,因为我想在画布上渲染悬停叠加层.我创建了一个代表我的代码的小提琴:linkHTML:使用Javascript:var canvas null;var ctx;var …

weld焊接_玩Weld-Probe –一站式查看CDI的所有方面

weld焊接当我坐在DevConf.CZ的会议室时, Weld 3.0.0.Alpha4已发布 。 大约在Jozef Hartinger( jozefhartinger )旁边或多或少 ,后者在共享休息前几分钟告诉我有关此最新版本的新功能的信息。 有一个特别的功能真正引起了我的注意&…

C语言:一种通用的程序设计语言

点击上方蓝字关注我,了解更多咨询语言是一种通用的程序设计语言。它同UNIX系统之间具有非常密切的关系。C语言是在UNIX系统上开发的,且无论是UNIX系统本身还是其上运行的大部分程序,都是C语言编写的。但是C语言并不受限于任何一种操作系统或机…

可禁用计算机服务,win10哪些服务可以禁用 服务哪些可以禁止启动

win10服务哪些可以禁止启动?方法一:命令方法首先使用 Windows R 组合快捷键打开“运行”窗口,之后键入 services.msc 按下回车键,即可打开“服务”。方法二:快捷方式法在Win10桌面的“此电脑”图标上点击鼠标右键&…

drill apache_如何使用Apache Drill分析高度动态的数据集

drill apache当今的数据是动态的,并由应用程序驱动。 由诸如Web /社交/移动/ IOT等行业趋势驱动的新业务应用时代的增长正在生成具有新数据类型和新数据模型的数据集。 这些应用程序是迭代的,并且关联的数据模型通常是半结构化的,无模式的且不…