jQuery悬停滚动显示超长菜单

jQuery悬停滚动显示超长菜单,jquery,scroll,menu,Jquery,Scroll,Menu,这大致基于Chris Coyier的片段: 我正在研究一个长的下拉解决方案,我想消除底部多余的空间,也许可以让点击鼠标附近的项目更容易一些。将鼠标悬停在菜单上可滚动该菜单 这是小提琴: 额外的空间是由我的JS向上移动UL造成的。它需要一个改进的移动比率,以便UL在滚动时不会移动得太高 我尝试了几种方法,例如: var remainder = containerBottom - ( list.offset().top + listheight ); //this remai

这大致基于Chris Coyier的片段:

我正在研究一个长的下拉解决方案,我想消除底部多余的空间,也许可以让点击鼠标附近的项目更容易一些。将鼠标悬停在菜单上可滚动该菜单

这是小提琴

额外的空间是由我的JS向上移动UL造成的。它需要一个改进的移动比率,以便UL在滚动时不会移动得太高

我尝试了几种方法,例如:

     var remainder = containerBottom - ( list.offset().top + listheight ); 
     //this remainder ought to be useful somehow.  Surely it must.
我确实意识到,对于大多数情况,这不是一个理想的UX解决方案,但我有一个布局,需要固定高度(动态分配)的容器,并隐藏溢出


谢谢:)

我可以通过在偏移量中添加一些像素来消除小提琴中的多余空间

containerTop = container.offset().top + 50,
或者使用listheight变量

listheight = list.outerHeight() - 200,

由于这花费了我相当长的时间,我将发布解决方案:

multiplier= ( listheight-container.outerHeight() ) / container.outerHeight();
更改乘数,使其使用您要移动的实际距离除以“轨迹”中的光标像素数


小提琴手:

对不起,你说得对。我必须将你的ul高度设置为每个列表项21像素,以删除额外的高度。我会用建议编辑我的答案,因为它目前是不正确的。不用担心,但额外的空间是由我的JS向上移动UL造成的。它需要调整位置,而不是高度。我的困惑是如何在滚动时创建正确的移动比率,这样它就不会走得太高,在底部留下空白。好的,再次编辑,我最后一次尝试。你可以通过增加几个像素、+60、70等来减少空间:我也尝试过,但因为我使用列表高度作为滚动比率的一部分,列表项的数量与底部的额外空间成反比。同样的问题也存在于原始版本中,我也可以通过修改listheight变量来做到这一点