【发布时间】:2021-02-08 13:13:21
【问题描述】:
使用hammer.js 拖动可在PC 上的浏览器上使用。它会持续触发,但对于 iPad,几乎没有问题。 在屏幕上拖动/滑动手指停止后触发
模板
<v-sheet v-pan="onPan">
<div class="vista__img" ref="image" :style="{ backgroundImage: 'url(' + vista.image + ')' }"></div>
</v-sheet>
指令
directives:{
pan: {
bind: function(el, binding) {
if (typeof binding.value === "function") {
const mc = new Hammer(el);
mc.get("pan").set({ direction: Hammer.DIRECTION_ALL });
mc.on("pan", binding.value);
}
}
},
方法和计算
methods:{
onPan(e) {
const dragOffset = -100 / this.itemWidth * e.deltaX / this.overflowRatio;
const transform = this.currentOffset + dragOffset;
this.$refs.image.style.setProperty("--x", transform);
if (e.isFinal) {
this.currentOffset = transform;
const maxScroll = 100 - this.overflowRatio * 100;
let finalOffset = this.currentOffset;
}
},
}
computed: {
overflowRatio() {
return this.$refs.image.scrollWidth / this.$refs.image.offsetWidth;
},
itemWidth() {
return this.$refs.image.scrollWidth;
},
},
关于在 iPad 上连续处理拖动有什么想法吗?
AND这个问题只出现在iPad浏览器(safari, chrome)上,iPhone没有问题
【问题讨论】:
-
"It fires finger drag is stop"是什么意思
-
例如,当我开始滑动/拖动图像时,它不会触发直到,拖动/滑动手指停止在屏幕上。我不知道如何更简单地解释它......@canbax
-
如果您是在真实的物理 iPad 设备上观察到这一点,那么复制是很困难的。如果可以在浏览器的开发者工具上重现,调试起来会更容易。此外,最小的可重复样本可能会有所帮助。
-
只有ipad?还是任何触控设备?
-
在 Iphone/safari 和 macbook/chrome/safari 上也没有问题.. 问题只出现在 IPAD @MoshFeu
标签: javascript hammer.js