1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Fix animated scroll of "smooth scrolled" elements in browsers that support smooth scroll (Chrome/Firefox)

This commit is contained in:
Dmitry Lyzo 2019-10-23 22:35:45 +03:00
parent fe87abc5a8
commit 0502e984ad

View file

@ -199,6 +199,26 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage
}
}
/**
* Performs built-in scroll.
*
* @param {HTMLElement} xScroller horizontal scroller
* @param {number} scrollX horizontal coordinate
* @param {HTMLElement} yScroller vertical scroller
* @param {number} scrollY vertical coordinate
* @param {boolean} smooth smooth scrolling
*/
function builtinScroll(xScroller, scrollX, yScroller, scrollY, smooth) {
var scrollBehavior = smooth ? "smooth" : "instant";
if (xScroller !== yScroller) {
scrollToHelper(xScroller, {left: scrollX, behavior: scrollBehavior});
scrollToHelper(yScroller, {top: scrollY, behavior: scrollBehavior});
} else {
scrollToHelper(xScroller, {left: scrollX, top: scrollY, behavior: scrollBehavior});
}
}
var scrollTimer;
/**
@ -238,8 +258,7 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage
dx = Math.round(dx*k);
dy = Math.round(dy*k);
xScroller.scrollLeft += dx;
yScroller.scrollTop += dy;
builtinScroll(xScroller, xScroller.scrollLeft + dx, yScroller, yScroller.scrollTop + dy, false);
scrollTimer = requestAnimationFrame(scrollAnim);
};
@ -263,14 +282,7 @@ define(["dom", "browser", "layoutManager"], function (dom, browser, layoutManage
if (smooth && useAnimatedScroll()) {
animateScroll(xScroller, scrollX, yScroller, scrollY);
} else {
var scrollBehavior = smooth ? "smooth" : "instant";
if (xScroller !== yScroller) {
scrollToHelper(xScroller, {left: scrollX, behavior: scrollBehavior});
scrollToHelper(yScroller, {top: scrollY, behavior: scrollBehavior});
} else {
scrollToHelper(xScroller, {left: scrollX, top: scrollY, behavior: scrollBehavior});
}
builtinScroll(xScroller, scrollX, yScroller, scrollY, smooth);
}
}