| 123456789101112131415161718192021 |
- type scrollingDirection = "v" | "h" | "vh" | "hv" ;
- export default function syncronizeElementsScrolling(elements:Array<HTMLBaseElement>, direction:scrollingDirection = "vh"):void{
- let activeScroller:HTMLElement | null = null;
- const bSyncroV = direction.indexOf("v") > -1 ;
- const bSyncroH = direction.indexOf("h") > -1 ;
- const applyListener = function(element:HTMLBaseElement) {
- element.addEventListener("mouseenter", function(e:MouseEvent) {
- activeScroller = e.target as HTMLElement;
- });
- element.addEventListener("scroll", function(e:Event) {
- if (e.target !== activeScroller) return;
- elements.forEach(function(element) {
- if (activeScroller === element || activeScroller === null) return;
- if (bSyncroV) element.scrollTop = activeScroller.scrollTop;
- if (bSyncroH) element.scrollLeft = activeScroller.scrollLeft;
- });
- });
- }
- elements.forEach(applyListener)
- }
|