diff --git a/app/src/protyle/render/av/render.ts b/app/src/protyle/render/av/render.ts index f04d99ba3..9d3be593c 100644 --- a/app/src/protyle/render/av/render.ts +++ b/app/src/protyle/render/av/render.ts @@ -22,6 +22,8 @@ export const avRender = (element: Element, protyle: IProtyle, cb?: () => void) = return; } const left = e.querySelector(".av__scroll")?.scrollLeft || 0; + const headerTransform = (e.querySelector(".av__row--header") as HTMLElement)?.style.transform; + const footerTransform = (e.querySelector(".av__row--footer") as HTMLElement)?.style.transform; fetchPost("/api/av/renderAttributeView", { id: e.getAttribute("data-av-id"), }, (response) => { @@ -182,7 +184,15 @@ ${cell.color ? `color:${cell.color};` : ""}">${text}`; `; e.setAttribute("data-render", "true"); - e.querySelector(".av__scroll").scrollLeft = left; + if (left) { + e.querySelector(".av__scroll").scrollLeft = left; + } + if (headerTransform) { + (e.querySelector(".av__row--header") as HTMLElement).style.transform = headerTransform; + } + if (footerTransform) { + (e.querySelector(".av__row--footer") as HTMLElement).style.transform = footerTransform; + } if (cb) { cb(); } diff --git a/app/src/protyle/scroll/event.ts b/app/src/protyle/scroll/event.ts index 0013ce546..71bca5e9f 100644 --- a/app/src/protyle/scroll/event.ts +++ b/app/src/protyle/scroll/event.ts @@ -38,7 +38,7 @@ export const scrollEvent = (protyle: IProtyle, element: HTMLElement) => { const footerElement = item.querySelector(".av__row--footer") as HTMLElement; if (footerElement) { const footerBottom = headerTop + footerElement.parentElement.clientHeight; - const scrollBottom = element.scrollTop + element.clientHeight; + const scrollBottom = element.scrollTop + element.clientHeight + 5; if (headerTop + 42 + 36 * 2 < scrollBottom && footerBottom > scrollBottom) { footerElement.style.transform = `translateY(${scrollBottom - footerBottom}px)`; } else {