如何在鼠标滚轮上滚动水平滚动?

Rak*_*yal 19 html javascript jquery scroll horizontal-scrolling

刚才,我不小心偶然发现了http://www.benekdesign.com/.在鼠标滚轮上滚动它执行水平滚动.说真的,我不喜欢这个功能.这有点刺激.但是,请告诉我如何实现同样的目标.

编辑

哇,萤火虫说他正在使用

/*水平微小滚动 - 水平网站的平滑滚动脚本2(垂直"Tiny Scrolling"的兄弟)3 Marco Rosella - http://www.centralscrutinizer.it/en/design/js-php/horizo​​ntal-tiny - 滚动 4 v0.6 - 2007年2月14日

And*_*y E 24

看起来他只是将鼠标滚轮事件映射到滚动区域.在IE中,只需使用该doScroll()方法就可以轻松实现- 这将按垂直条通常滚动的数量滚动水平条.其他浏览器不支持该doScroll()方法,因此您必须使用任意数量的滚动:

var mouseWheelEvt = function (event) {
    if (document.body.doScroll)
        document.body.doScroll(event.wheelDelta>0?"left":"right");
    else if ((event.wheelDelta || event.detail) > 0)
        document.body.scrollLeft -= 10;
    else
        document.body.scrollLeft += 10;

    return false;
}
document.body.addEventListener("mousewheel", mouseWheelEvt);
Run Code Online (Sandbox Code Playgroud)

  • @Cobby:jquery.mousewheel没有做我的示例代码所做的事情,所以你正在进行苹果和橘子的比较.我认为这个任务太过分了.此外,我认为您对delta的工作原理感到困惑,这表示每个事件触发时鼠标/触控板的滚动距离.所以,如果有的话,这段代码对于非常大的移动会滚动一点慢.从我的一些旧代码中获取自定义滚动条后,我可以验证它是否运行良好,但我想我可以稍微改进一下.你真的应该在匆忙下来投票答案之前做你的研究. (2认同)
  • 对不起,我DID尝试增加一个固定数量的方法,但是我的<div>试图用我的触控板上最轻微的双指滑动来滚动大约2000px ...你需要使用delta来做一些很好的滚动.我确切知道三角洲的运作方式. (2认同)

mad*_*adc 8

由于以上解决方案对我不起作用,我刚刚找到另一个解决方案:http: //css-tricks.com/snippets/jquery/horz-scroll-with-mouse-wheel/

示例:http: //digwp.com/archives/horz/

  • 非常感谢您花时间发表评论@madc.真的很有帮助.编辑:插件的链接对我而言,css-tricks的演示对我来说在Firefox 19.0.1中不起作用,但是你提供的示例链接也是如此,我只是从那里撕下代码. (2认同)

小智 5

另一种形式:

document.addEventListener('wheel', (e) => {
    document.getElementById('scroll_container').scrollLeft += e.deltaY;
})
Run Code Online (Sandbox Code Playgroud)