aboutsummaryrefslogtreecommitdiff
path: root/FrontEnd/src/app/utilities
diff options
context:
space:
mode:
authorcrupest <crupest@outlook.com>2021-04-13 18:41:07 +0800
committercrupest <crupest@outlook.com>2021-04-13 18:41:07 +0800
commitb6096233602281c48f1a53b6b5089b5752ed4e65 (patch)
tree7629deb9618c51cbafe7156a4fb7b8d12b6dc6d9 /FrontEnd/src/app/utilities
parent25d4831aac40f5438d91d8a303af930e0d97cb2d (diff)
downloadtimeline-b6096233602281c48f1a53b6b5089b5752ed4e65.tar.gz
timeline-b6096233602281c48f1a53b6b5089b5752ed4e65.tar.bz2
timeline-b6096233602281c48f1a53b6b5089b5752ed4e65.zip
...
Diffstat (limited to 'FrontEnd/src/app/utilities')
-rw-r--r--FrontEnd/src/app/utilities/useReverseScrollPositionRemember.ts24
1 files changed, 18 insertions, 6 deletions
diff --git a/FrontEnd/src/app/utilities/useReverseScrollPositionRemember.ts b/FrontEnd/src/app/utilities/useReverseScrollPositionRemember.ts
index 8a2bd7a0..67c7c458 100644
--- a/FrontEnd/src/app/utilities/useReverseScrollPositionRemember.ts
+++ b/FrontEnd/src/app/utilities/useReverseScrollPositionRemember.ts
@@ -7,19 +7,31 @@ export default function useReverseScrollPositionRemember(): void {
if (on) return;
on = true;
- let scrollPosition =
- document.documentElement.scrollHeight -
- document.documentElement.scrollTop;
-
+ function getScrollPosition(): number {
+ if (document.documentElement.scrollHeight <= window.innerHeight) {
+ return 0;
+ } else {
+ return (
+ document.documentElement.scrollHeight -
+ document.documentElement.scrollTop -
+ window.innerHeight
+ );
+ }
+ }
+
+ let scrollPosition = getScrollPosition();
const scrollListener = (): void => {
- scrollPosition = document.documentElement.scrollHeight - window.scrollY;
+ scrollPosition = getScrollPosition();
};
window.addEventListener("scroll", scrollListener);
const resizeObserver = new ResizeObserver(() => {
+ if (document.documentElement.scrollHeight <= window.innerHeight) return;
document.documentElement.scrollTop =
- document.documentElement.scrollHeight - scrollPosition;
+ document.documentElement.scrollHeight -
+ window.innerHeight -
+ scrollPosition;
});
resizeObserver.observe(document.documentElement);