vue手势解决方案
1、需求
因为项目中要做一个可以移动、旋转和放缩具有合成图片的功能,例如:

剑可以随意移动,然后把位移、旋转角度和放缩值传给后台进行合成。
2、解决方案
网上搜到手势插件AlloyFinger,https://github.com/AlloyTeam/AlloyFinger
首先安装AlloyFinger:npm install alloyfinger
然后在Vue文件里面引用:import AlloyFinger from 'alloyfinger'
使用方法:
mounted() {
this.getData();
this.requireList = document.getElementsByClassName('required');
let swordEle = document.getElementsByClassName('swordPic')[0];
let bwidth, bheight, swidth, sheight;
Transform(swordEle);
var initScale = 1;
var af = new AlloyFinger(swordEle, {
touchStart: function () {
console.log('touchStart')
},
touchMove: function (evt) {
swordEle.style.translateX += evt.deltaX;
swordEle.style.translateY += evt.deltaY;
evt.preventDefault();
},
touchEnd: function () {
console.log('end')
console.log(swordEle.style.transform)
},
touchCancel: function () {
console.log('cancel')
},
multipointStart: function () {
initScale = swordEle.scaleX;
},
multipointEnd: function () {
},
tap: function () {
},
doubleTap: function () {
},
longTap: function () {
},
singleTap: function () {
},
rotate: function (evt) {
swordEle.rotateZ += evt.angle;
},
pinch: function (evt) {
swordEle.scaleX = swordEle.scaleY = initScale * evt.scale;
},
pressMove: function (evt) {
let widthDiff = bwidth - swidth;
let heightDiff = bheight - sheight;
console.log('diff' + widthDiff + ' ' + heightDiff)
console.log('translateX:' + swordEle.translateX + '' + swordEle.translateY )
if (((evt.deltaX>0)&&(swordEle.translateX >= widthDiff))||((evt.deltaY>0)&&(swordEle.translateY >= heightDiff))||((swordEle.translateX<0)&&((evt.deltaX<0)))||((swordEle.translateY<0)&&((evt.deltaY<0)))) {
console.log('越界')
} else {
swordEle.translateX += evt.deltaX;
swordEle.translateY += evt.deltaY;
}
console.log('pressmve:' + swordEle.translateX)
console.log('pressmve:' + swordEle.translateY)
},
swipe: function (evt) {
// console.log("swipe" + evt.direction);
}
});
document.getElementById('coverPic').onload = function () {
bwidth = this.width;
bheight = this.height;
console.log(bwidth + ' ' + bheight)
if (document.body.scrollHeight - document.body.clientHeight > 20) {
document.body.scrollTop = document.body.scrollHeight;
}
}
document.getElementById('swordEle').onload = function () {
swidth = this.width;
sheight = this.height;
console.log(swidth + ' ' + sheight)
}
},
vue手势解决方案的更多相关文章
- nginx部署vue项目 解决方案
给前端同事部署了web项目之后,访问发现除了index.html可以访问,其他的路径使用了“伪静态”.比如访问:http://localhost:8081/user/login,访问即报404错误,这 ...
- 超小Web手势库AlloyFinger原理
目前AlloyFinger作为腾讯手机QQ web手势解决方案,在各大项目中都发挥着作用. 感兴趣的同学可以去Github看看:https://github.com/AlloyTeam/AlloyFi ...
- 超小Web手势库AlloyFinger原理(转载)
目前AlloyFinger作为腾讯手机QQ web手势解决方案,在各大项目中都发挥着作用. 感兴趣的同学可以去Github看看: https://github.com/AlloyTeam/AlloyF ...
- vue数据绑定数组,改变元素时不更新view问题
关于这个问题,官网上说的很清楚官方文档 写个例子HTML<body> <div class="box"> <div v-for="aa i ...
- ASP.NET MVC+Vue.js实现联系人管理
接触了一天vue.js,简单浏览了一本关于vue的电子书,就开始动手使用ASP.NET MVC和Vue.js开发一个联系人管理的小程序. 先看一下这个联系人管理的小程序的界面,也就是我们大概要实现什么 ...
- 1.vue和react的区别
1.个人感觉Vue好用,react不咋地呀. 2.(网上搜的)Vue的解决方案适用于小型应用,但对于对于大型应用而言不太适合.
- 2017 年比较 Angular、React、Vue 三剑客(转载)
为 web 应用选择 JavaScript 开发框架是一件很费脑筋的事.现如今 Angular 和 React 非常流行,并且最近出现的新贵 VueJS 同样博得了很多人的关注.更重要的是,这只是一些 ...
- React的世界观及与Vue之比较
写在前面:本文谈论的是主观的个人感受,不追求立场的“客观.公正”,因此我下面所说的很可能是错的,欢迎交流指正. 我学习前端时,跟大部分beginner一样,学的第一个框架是Vue,入职后也一直写Vue ...
- vue要求更新3.0-》使用axios的时候出现错误
要求更新 使用axios报错 - Running completion hooks...error: 'options' is defined but never used (no-unused-va ...
随机推荐
- window.open居中显示
window.open中会发现怎么打开的浏览器窗口怎么不在正中间,而且还比较随性,那不是逼死强迫症患者了,所以查了一下资料始终打开的窗口能显示在正中间,下面是js中的代码分享 // url 转向网页的 ...
- MySQL & export
MySQL & export mysql export table form command line https://cn.bing.com/search?q=mysql%20export% ...
- TCP协议的滑动窗口具体是怎样控制流量的
首先明确: 1)TCP滑动窗口分为接受窗口,发送窗口滑动窗口协议是传输层进行流控的一种措施,接收方通过通告发送方自己的窗口大小,从而控制发送方的发送速度,从而达到防止发送方发送速度过快而导致自己被淹没 ...
- OracleHelp以及其简单应用
我自己写的简单的OracleHelp <?xml version="1.0" encoding="utf-8" ?> <configurati ...
- ExtJs在页面上window再调用Window的事件处理
今天在开发Ext的过程中遇到了一个恶心的问题,就是在ext.window页面,点击再次弹出window时,gridpanel中的store数据加载异常,不能正常被加载,会出现缓存,出现该问题,是因为w ...
- HDU 5645
DZY Loves Balls Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others ...
- 访问修饰符public,private,protected和default的区别?
类的成员不写访问修饰符默认为default,默认对于同一个包的其他类相当于公开(public),对于不是同一个包的其他类相当于私有(private). 受保护(protected)对子类相当于公开,对 ...
- Android数据库资料
一.联系人和通话记录: 数据库文件/data/data/com.android.providers.contacts/databases/contacts2.db 通话记录的数据存在calls表中; ...
- HTML学习基本代码
HTML的代码比较繁琐,在此记下一些基本的东西,以后自己回来看看 <html> <head> <title>我的人生啊</title> <styl ...
- jq 数组定义,拼接~~~push应用
var radio_checked_array = []; $("input[type='radio']").each(function(){ if($(this).attr('c ...