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
+34
View File
@@ -0,0 +1,34 @@
export interface PageVerticalRange {
top: number;
bottom: number;
}
export const PREVIEW_SCROLLBAR_WIDTH_PX = 14;
export function getNearestPageNumber(
viewportCenter: number,
pages: readonly PageVerticalRange[]
) {
if (pages.length === 0 || !Number.isFinite(viewportCenter)) {
return 0;
}
let nearestPage = 1;
let nearestDistance = Number.POSITIVE_INFINITY;
for (const [index, page] of pages.entries()) {
const distance =
viewportCenter < page.top
? page.top - viewportCenter
: viewportCenter > page.bottom
? viewportCenter - page.bottom
: 0;
if (distance < nearestDistance) {
nearestPage = index + 1;
nearestDistance = distance;
}
}
return nearestPage;
}