缩放图像后触摸移动事件不会触发(scale3d)

Posted

技术标签:

【中文标题】缩放图像后触摸移动事件不会触发(scale3d)【英文标题】:touchmove event won't fire after scaling image (scale3d) 【发布时间】:2013-06-16 12:51:36 【问题描述】:

如您所见:http://jsfiddle.net/hWm9M/1/ 通过在图像缩放时执行touchmove,您可以在控制台中验证touchmove event 是否按预期附加。但是当完全缩放时,事件不会触发。 我尝试在 transitionend 上附加事件,但也没有成功。

代码如下:

var handleStart = function() 
    this.style.webkitTransition = 'all 3s linear'
    this.style.webkitTransform = 'scale3d(2, 2, 0)'
    this.addEventListener("touchmove", handleMove, false)


var handleMove = function() 
    console.log(this)


var image = document.getElementById("img")
image.addEventListener("touchstart", handleStart, false)

有什么想法吗?

【问题讨论】:

始终处理 touchmove 更简单(您在 touchstart 处理程序之后添加一次 evt 列表),并且有一个布尔值告诉您是否正在进行转换。 Rq :您的代码可能会添加多次事件侦听器/触发多次转换(多点触控情况)。 喜欢jsfiddle.net/53kd8/1 ?这个问题似乎真的与 scale3d 的使用有关。我尝试使用 translate3d 进行测试,转换后事件不断触发。 好吧,如果情况那么清楚(translate3d 可以,scale3d 有问题),你可能只是发现了一个错误...... 【参考方案1】:

当您使用 Z 值 == 0 的 scale3d 时会出现问题

我使用的工作方法是将 1 而不是 0 传递给 Z 值:

在你的情况下是这样的:'scale3d(2, 2, 1)'

【讨论】:

以上是关于缩放图像后触摸移动事件不会触发(scale3d)的主要内容,如果未能解决你的问题,请参考以下文章

touch移动触屏滑动事件

移动开发基础-touch事件

移动端事件

html5 touch 触摸事件如何监听一个手指多次来回摩擦触发事件?

小程序04-事件绑定

微信小程序~触摸相关事件(拖拽操作手势识别多点触控)