完全禁用水平滚动,也在掉落事件

Completely disable horizontal scrolling, also in drop events

本文关键字:事件 滚动 水平      更新时间:2023-09-26

我得到了一个右侧有滑动面板的html页面。这个面板是200px宽,位置:固定,它的位置最初设置为右:-100px(在clientArea的中间位置)。Overflow-x对body、html (css)设置为隐藏,面板接受鼠标悬停事件和拖放事件。鼠标悬停时,面板向右滑动:0.

如果我在这个面板上拖动一个可拖动的元素,面板会正确地向左滑动,但是窗口开始向右滚动,这是一个不希望看到的行为。

我还尝试了一个javascript解决方案,如下所述:禁用javascript水平滚动但这是一个糟糕的解决方案,因为它使clientArea开始闪烁。

完全禁用水平滚动的最好方法是什么?可能是跨浏览器的解决方案。

感谢

更新:

导致问题的不是滑动面板,而是可拖动元素的helper对象(我使用jquery-ui),它在拖动时锚定在左上角的鼠标位置。假设helper对象是一个200x100px的div。当拖动到窗口区域的最右侧时,问题出现在向右滚动窗口,而不是剪切helper(而不是滚动窗口)。在拖动操作期间,我通过将鼠标锚定在助手的右上角来管理这一点,但我仍然好奇是否有任何方法可以完全禁用窗口的水平滚动。我假定helper对象完全"分离"于页面流(就像在css中使用position: absolute一样),但显然不是。

我最终改变了我最初的要求,从而改变了页面设计。

如果你不把面板放在右:-100px,但给它一个宽度100px,并把它放在右:0px呢?

然后鼠标悬停,动画宽度为200px。感觉还是像在滑。我不知道你的面板的内容是否允许改变宽度,但也许你可以给面板一个溢出:隐藏。