首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Hammer.js 2.0水平只夹点

Hammer.js 2.0水平只夹点
EN

Stack Overflow用户
提问于 2014-09-17 12:08:02
回答 3查看 2K关注 0票数 2

是否有一种方法可以使用Hammer.js在HTML元素上设置夹点事件,以便只允许水平轴上的夹点事件?我希望垂直轴被用于标准的页面滚动。

当我设置水平平底锅时,垂直的页面滚动工作。当我设置水平平底盘和夹紧时,垂直页面滚动停止工作。连一个手指滚动都停止工作了。

代码语言:javascript
复制
        var hammerEl = Hammer(element);
        var pan = new Hammer.Pan({
            direction: Hammer.DIRECTION_HORIZONTAL
        });
        var pinch = new Hammer.Pinch({
        });
        hammerEl.add(pan);
        hammerEl.add(pinch);

http://jsfiddle.net/ph1mpzm1/

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-18 13:04:52

我想通了。我在Hammer经理中添加了touchAction: "pan-y"

博士:http://hammerjs.github.io/touch-action/

改良试验:http://jsfiddle.net/ph1mpzm1/1/

票数 2
EN

Stack Overflow用户

发布于 2014-09-17 19:48:35

你可以在不阻塞垂直卷轴的情况下工作。我不确定,但下面的可能有用。试试看。关键是requireFailure位。如果它看到你正在做一个垂直的平底锅手势,它就不会注册一个夹点事件。

代码语言:javascript
复制
    var hammerEl = Hammer(element);
    var panH = new Hammer.Pan({
        event: "panH",
        direction: Hammer.DIRECTION_HORIZONTAL
    });
    var panV = new Hammer.Pan({
        event: "panV",
        direction: Hammer.DIRECTION_VERTICAL
    });
    var pinch = new Hammer.Pinch({
        enable: true
    });
    hammerEl.add([panH, panV, pinch]);
    pinch.requireFailure(panV);

    hammerEl.on("panH", function(){/*do horizontal pan things*/});
    hammerEl.on("pinch", function(){/*do pinch things*/});
票数 1
EN

Stack Overflow用户

发布于 2020-03-31 17:25:11

我们可以使用锤子事件deltaX和deltaY属性来解决这个问题。

代码语言:javascript
复制
  const dx = Math.abs(event.deltaX);
    const dy = Math.abs(eevent.deltaY);
    console.log(dx > dy ? 'horizontal' : 'vertical');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25890191

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档