I would like to know if it's possible and how to transfer a mousewheel/scroll event (scroll attempt by a user) from the header
to the container
.
I have the following example situations:
+------------+ +------------+|
| header | | header ||
+------------+ +------------+|
| || | ||
| || | ||
| container || | container ||
| || | ||
| || | ||
+------------+ +------------+|
situation 1 situation 2
Situations
Situation 2 is the 'traditional' setup in which the complete page can be scrolled. When your cursor hovers the header (even though it might be fixed) the scroll attempt is passed along to the body/html. Since the container overflows the body/html the container will move/scroll if a user rotates his/her mousewheel. Because the header is fixed it will stay at the same position.
Situation 1 is my test setup. The container's content overflows the container which will cause the container to show a scrollbar. Now i'd like for the container to also scroll when a user's cursor is hovering the header and the user rotates his/her scrollwheel.
Update 1
a jsfiddle of situation 1
a jsfiddle of situation 2
Update 2
I've created another fiddle to show my progress in which may lie the solution, only I can't get it to work. This might inspire someone else to get the actual solution :)
I get the error: (index):69 Uncaught InvalidStateError: Failed to execute 'dispatchEvent' on 'EventTarget': The event is already being dispatched.
(For now it's only the scroll event in chrome)
Update 3
This comes closest to my expected solution which is based on 'Other Solution 2'. Thanks to Maksym Stepanenko's research it does not seem to be possible yet. I leave the question unanswered for now in case someone does find a method :)
Other solutions
These questions talk about this issue but don't provide a solution for this setup the way I'd expect it to work:
- This won't help because the header issn't placed over the container but above. HTML & JavaScript - Passing the scroll action from one element to another
- The accepted answer doesn't transfer the event but just sets the scrollTop. This is not the behaviour the browser provides when scrolling. You can clearly see a difference in the jsFidle in the way the scroll happens when hovering the element or when the scroll is performed normally. The browser makes the scroll smooth, the scrollTop just sets the value making it 'shock'. However, except for the 'shock' part this is very close to the behaviour I'd like to have! Pass mousewheel event through fixed content