在vue中实现移动端双指放大或缩小功能代码示例
前端  /  管理员 发布于 1年前   863
在vue中如何实现移动端双指放大或缩小功能呢?可以看下面简单的实现示例。
示例代码:
data() {
return {
displacement: {
scale: 1
}
}
},
mounted() {
// this.$nextTick()将回调延迟到下次 DOM 更新循环之后执行
let that = this;
this.$nextTick(() => {
// 获取放大或缩小的区域DOM
let matrix_box = document.querySelector(".build_matrix_box");
matrix_box.addEventListener("touchstart", function(event) {
var touches = event.touches;
var events = touches[0];
var events2 = touches[1];
// event.preventDefault();
// 第一个触摸点的坐标
that.displacement.pageX = events.pageX;
that.displacement.pageY = events.pageY;
that.displacement.moveable = true;
if (events2) {
that.displacement.pageX2 = events2.pageX;
that.displacement.pageY2 = events2.pageY;
}
that.displacement.originScale = that.displacement.scale || 1;
// console.log(that.displacement);
});
document.addEventListener("touchmove", function(event) {
if (!that.displacement.moveable) {
return;
}
event.preventDefault();
var touches = event.touches;
var events = touches[0];
var events2 = touches[1];
// 双指移动
if (events2) {
// 第2个指头坐标在touchmove时候获取
if (!that.displacement.pageX2) {
that.displacement.pageX2 = events2.pageX;
}
if (!that.displacement.pageY2) {
that.displacement.pageY2 = events2.pageY;
}
// 双指缩放比例计算
var zoom =
that.getDistance(
{
x: events.pageX,
y: events.pageY
},
{
x: events2.pageX,
y: events2.pageY
}
) /
that.getDistance(
{
x: that.displacement.pageX,
y: that.displacement.pageY
},
{
x: that.displacement.pageX2,
y: that.displacement.pageY2
}
);
// 应用在元素上的缩放比例
var newScale = that.displacement.originScale * zoom;
// 最大缩放比例限制
if (newScale > 1) {
newScale = 1;
}
// 记住使用的缩放值
that.displacement.scale = newScale;
// 图像应用缩放效果
// console.log(newScale);
matrix_box.style.transform = "scale(" + newScale + ")";
// 设置旋转元素的基点位置
matrix_box.style.transformOrigin = "0px 0px 0px";
}
});
});
},
methods: {
getDistance(start, stop) {
// Math.hypot()计算参数的平方根
return Math.hypot(stop.x - start.x, stop.y - start.y);
},
}
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号