我想知道如何将鼠标滚轮/滚动事件(用户尝试滚动)从
以下是我遇到的情况示例:
+------------+ +------------+|
| header | | header ||
+------------+ +------------+|
| || | ||
| || | ||
| container || | container ||
| || | ||
| || | ||
+------------+ +------------+|
situation 1 situation 2
情境
情境2是“传统”设置,在此设置中,可以滚动整个页面。当您的光标悬停在标题上(即使它可能是固定的),滚动尝试将被传递到body/html。由于容器溢出了body/html,因此如果用户旋转鼠标滚轮,则容器将移动/滚动。由于标题是固定的,因此它将保持在相同的位置。
情境1是我的测试设置。容器的内容溢出容器会导致容器显示滚动条。现在,当用户的光标悬停在标题上并且用户旋转鼠标滚轮时,我希望容器也能滚动。
更新1
情境1 的jsfiddle。
情境2 的jsfiddle。
更新2
我创建了另一个fiddle,展示了我的进展,其中可能包含解决方案,但我无法让它起作用。这可能会启发其他人找到实际的解决方案 :) 我收到错误:(index):69 Uncaught InvalidStateError: Failed to execute 'dispatchEvent' on 'EventTarget': The event is already being dispatched.
(目前仅在chrome中滚动事件)
更新3
这 最接近我期望的解决方案,它基于“其他解决方案2”。感谢Maksym Stepanenko的研究,似乎尚不可能。如果有人找到方法,我将保留问题未答复 :)
其他解决方案
这些问题讨论了这个问题,但没有提供我期望的工作方式的解决方案:
- 这无法帮助,因为标题不是放置在容器上方而是在其上方。HTML & JavaScript - Passing the scroll action from one element to another
- 被接受的答案并没有传递事件,而只是设置了scrollTop。这不是浏览器在滚动时提供的行为。您可以清楚地看到jsFidle中悬停在元素上时滚动发生的方式与正常执行滚动时不同。浏览器使滚动平滑,scrollTop仅设置值使其“震动”。但是,除了“震动”部分之外,这非常接近我想要的行为!Pass mousewheel event through fixed content