diff --git a/index.js b/index.js index f6e4fe2..d8cb3bc 100644 --- a/index.js +++ b/index.js @@ -653,10 +653,29 @@ export function useLocalStorage(key, initialValue) { export function useLockBodyScroll() { React.useLayoutEffect(() => { - const originalStyle = window.getComputedStyle(document.body).overflow; + const scrollX = window.scrollX; + const scrollY = window.scrollY; + const originalStyle = { + overflow: document.body.style.overflow, + position: document.body.style.position, + left: document.body.style.left, + top: document.body.style.top, + width: document.body.style.width, + }; + document.body.style.overflow = "hidden"; + document.body.style.position = "fixed"; + document.body.style.left = `-${scrollX}px`; + document.body.style.top = `-${scrollY}px`; + document.body.style.width = "100%"; + return () => { - document.body.style.overflow = originalStyle; + document.body.style.overflow = originalStyle.overflow; + document.body.style.position = originalStyle.position; + document.body.style.left = originalStyle.left; + document.body.style.top = originalStyle.top; + document.body.style.width = originalStyle.width; + window.scrollTo(scrollX, scrollY); }; }, []); }