Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Jquery鼠标滚轮与触摸板水平滚动_Javascript_Jquery_Scroll_Mousewheel - Fatal编程技术网

Javascript Jquery鼠标滚轮与触摸板水平滚动

Javascript Jquery鼠标滚轮与触摸板水平滚动,javascript,jquery,scroll,mousewheel,Javascript,Jquery,Scroll,Mousewheel,我正在使用jquery.mousewheel.js插件构建一个水平滚动网站。到目前为止,它仍然有效,但我无法找出一个问题: 如果我使用触控板(例如MacBook Pro上的触控板)并用两个手指水平滚动,这取决于手指的平行位置,则该站点将被卡住或无法确定其滚动方向 有没有办法使这个水平卷轴也工作顺利 这是我在头部使用的代码: $(function () { $("html, body, *").mousewheel(function (event, delta) { thi

我正在使用jquery.mousewheel.js插件构建一个水平滚动网站。到目前为止,它仍然有效,但我无法找出一个问题:

如果我使用触控板(例如MacBook Pro上的触控板)并用两个手指水平滚动,这取决于手指的平行位置,则该站点将被卡住或无法确定其滚动方向

有没有办法使这个水平卷轴也工作顺利

这是我在头部使用的代码:

$(function () {
    $("html, body, *").mousewheel(function (event, delta) {
        this.scrollLeft -= (delta * 5);
        this.scrollRight -= (delta * 5);
        event.preventDefault();
    });
});

在这里,我的jsfiddle谈到了重建后的情况:

即使这个问题已经提出了几个月,我也会留下一些对我有用的东西

这个想法是,轨迹板通常在X和Y轴上同时移动,因此如果我们在滚轮侦听器中检测到水平移动,它很可能是轨迹板。请注意,您只需要向左调整,而不需要同时向左和向右调整

$(".container").mousewheel( function(e, delta) {

    if( Math.abs(e.deltaX) ) {
        this.scrollLeft -= (e.deltaX * 20);
    } else {
        this.scrollLeft -= (e.deltaY * 20);
    }

    e.preventDefault();
});
你还记得X轴上有一个运动,然后只对该轴作出一秒钟左右的反应:

var timeout, trackpad = false;

$(".modernlayout .wrapper").mousewheel( function(e, delta) {

    if( trackpad || Math.abs(e.deltaX) ) {
        // probably using trackpad
        // only respond on X axis for a second
        trackpad = true; clearTimeout( timeout );
        timeout = setTimeout(function(){ trackpad = false; }, 1000);
        // use a smaller multiplier
        this.scrollLeft -= (e.deltaX * 10);
    } else {
        // most likely not trackpad
        this.scrollLeft -= (e.deltaY * 20);
    }

    e.preventDefault();

});

看起来好像没有,因为你把向上和向左、向下和向右等同起来,那么当用户向上和向右滚动,或者向下和向左滚动时会发生什么呢?它们相互矛盾。好的,谢谢,这是有道理的。你知道有没有办法禁用轨迹板和鼠标(如苹果鼠标)的水平滚动,以便只使用垂直滚动?