gpt4 book ai didi

javascript - jack 摩尔缩放 1.7.15 : Toggle zoom on touch device with double tap

转载 作者:数据小太阳 更新时间:2023-10-29 04:21:17 27 4
gpt4 key购买 nike

使用 Jackmoore 的 Zoom:http://www.jacklmoore.com/zoom/ https://github.com/jackmoore/zoom

我想在触摸设备上使用双击来切换缩放效果。原因是我为图像使用的轮播(OWL Carousel)也具有滑动功能,并且缩放通过触摸和拖动图像在触摸设备上工作,这与滑动冲突。

就像 topman 网站对移动设备所做的一样: http://www.topman.com/en/tmuk/product/clothing-140502/mens-blazers-5369753/black-textured-slim-fit-tuxedo-jacket-5390835?bi=0&ps=20

这是 JS 文件的链接:https://github.com/jackmoore/zoom/blob/master/jquery.zoom.js

我可以通过在非触摸设备上双击来让它工作:

if (settings.on === 'toggle') {
$source.on('dblclick.zoom',
function (e) {
if (clicked) {
stop();
} else {
start(e);
}
clicked = !clicked;
}
);

但是需要调整触摸设置的代码,我相信改变这部分:

// Touch fallback
if (settings.touch) {
$source
.on('touchstart.zoom', function (e) {
e.preventDefault();
if (touched) {
touched = false;
stop();
} else {
touched = true;
start( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] );
}
})
.on('touchmove.zoom', function (e) {
e.preventDefault();
zoom.move( e.originalEvent.touches[0] || e.originalEvent.changedTouches[0] );
})
.on('touchend.zoom', function (e) {
e.preventDefault();
if (touched) {
touched = false;
stop();
}
});
}

也许可以添加一个双击监听器,比如 Touchy:https://github.com/yairEO/touchy可以做到这一点。我现在设法让它识别双击,但没有启动缩放功能。

最佳答案

您可以自己创建双击处理程序。您将需要一些东西来跟踪点击发生的速度。

在触摸结束时,您需要存储时间戳并了解过去了多少时间,以及您是否想将其视为双击。

var stateVar = new Date().getTime();
function fnRef(e){
if(new Date().getTime() - stateVar < 300){
e.preventDefault();
// invoke logic here
}
}

element.addEventListener("touchend", fnRef);

以上内容应适合您的编码风格和情况,但总的来说,这就是其背后的逻辑。

我使用 300 毫秒作为比较值的原因是因为您需要防止点击行为并在那时调用您的缩放。 300 毫秒是点击事件应该在其目标上调用点击(在支持触摸的环境中使用的浏览器的通常行为)

关于javascript - jack 摩尔缩放 1.7.15 : Toggle zoom on touch device with double tap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38118323/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com