0

我正在构建一个 Web 应用程序,它有一个由许多小的可滚动 div(实际上是Ace编辑器)组成的网格,并且这个网格有足够的元素,它比窗口大。当用户开始滚动空白区域时,我希望他们滚动窗口本身;当用户开始在网格元素内滚动时,我希望他们在那里滚动 div 内容。问题是,如果用户开始在空白空间上滚动,然后滚动以使他们的鼠标移到网格元素上,则可滚动 div 会捕获所有滚动事件,从而中断用户在网格上的流动并将它们“困”在网格内元素。

我无法手动捕获onmousewheel事件,因为 AFAIK 无法单独捕获水平鼠标滚轮移动与垂直移动,我希望 Mac OS X 上的用户能够向各个方向滚动。我考虑过使用 JS 在第一个onscroll事件上添加一个 z-index 非常高的不可见 div,并在onscroll一段时间内没有触发事件时立即将其删除。尚未对此进行编码,但我想知道是否有更好的解决方案,或者是否有任何我没有想到的潜在陷阱。任何帮助或建议都会很棒!谢谢!

4

1 回答 1

0

我认为由于浏览器的支持,解决这个问题会非常困难,而实际的解决方案可能是计算滚动、回溯 div 以及将滚动应用于页面。

可以这样做:

$('div').scroll(function(e){
    // figure out how much it has scrolled
    window.scrollBy(0,howmuch);
});

我一点也不推荐这个解决方案,我认为更好的选择是将 div 设置为溢出:隐藏;并选择一个实体滚动插件,并使用它来自定义 div 上的滚动行为。

于 2011-07-14T02:29:35.787 回答