使用hammer.js的最小拖动/滑动距离

时间:2014-02-27 19:52:54

标签: javascript hammer.js

我正在做一个HTML5应用程序,我想配置一个滑动/拖动功能来打开/关闭offcanvas菜单。

该功能效果很好,但我希望有更精确的水平滑动或拖动,以防止触发垂直滚动和激活菜单。

默认情况下,滑动似乎效果不佳,因为必须非常快(甚至更改速度),拖动效果正常,但只需按下并移动一下即可激活事件。

我尝试更改变量drag_lock_min_distance,但遗憾的是根本不起作用,即使对于后面的巨大值,我也感觉不到差异。

我尝试检查实时内部变量X的速度和距离,但是它们显示的值是第一个事件的参考,而不是dragstartdragend

我正在使用原始hammer.js与twitter bootstrap,hammerjs版本1.0.6来自CDN(最后稳定版本)。我正在测试Android股票浏览器4.1.2和4.4(两款不同的手机)以及谷歌Chrome for Android。 这里有代码:

var element = document.getElementById('contenido');
Hammer(element,{drag: true,
      prevent_default: false,
      drag_block_horizontal: true,
      drag_lock_min_distance: 250,
      hold: true,
      release: true}).on("dragleft", function(event) {
// function
});
Hammer(element,{drag: true,
      prevent_default: false,
      drag_block_horizontal: true,
      drag_lock_min_distance: 250,
      hold: true,
      release: true}).on("dragright", function(event) {
//function
});

你知道有什么方法可以控制距离,使事件的解雇变得不那么明智吗?

1 个答案:

答案 0 :(得分:1)

对于将来遇到这种情况的人,来自Hammer > 2.0

您可以指定阈值选项以设置识别前所需的最小距离,如下所示:

var hammertime = new Hammer(myElement, myOptions);
hammertime.get('swipe').set({ threshold: 100 });
hammertime.on('swipe', function(ev) {
   console.log(ev);
});