fix: 修复长文档分页与滚动同步

This commit is contained in:
SkyJourney
2026-07-26 08:43:56 +08:00
parent 1d93f31f85
commit d62552384f
15 changed files with 449 additions and 61 deletions
+29
View File
@@ -0,0 +1,29 @@
export interface ScrollMetrics {
scrollTop: number;
scrollHeight: number;
clientHeight: number;
}
function clamp(value: number, minimum: number, maximum: number) {
return Math.min(maximum, Math.max(minimum, value));
}
export function getScrollProgress(metrics: ScrollMetrics) {
const range = metrics.scrollHeight - metrics.clientHeight;
if (range <= 0) {
return 0;
}
return clamp(metrics.scrollTop / range, 0, 1);
}
export function getSyncedScrollTop(
source: ScrollMetrics,
target: ScrollMetrics
) {
const targetRange = Math.max(
0,
target.scrollHeight - target.clientHeight
);
return getScrollProgress(source) * targetRange;
}