diff --git a/src/client/theme-default/composables/scroll-lock.ts b/src/client/theme-default/composables/scroll-lock.ts index e04d15f64..3472d462d 100644 --- a/src/client/theme-default/composables/scroll-lock.ts +++ b/src/client/theme-default/composables/scroll-lock.ts @@ -117,8 +117,13 @@ export function useBodyScrollLock(): WritableComputedRef { const isLocked = shallowRef(false) let useEvents = false + let scrollY = 0 + function lock() { if (isLocked.value) return + + scrollY = window.scrollY + useEvents = window.innerWidth > document.documentElement.clientWidth && !CSS.supports('scrollbar-gutter', 'stable') @@ -130,6 +135,8 @@ export function useBodyScrollLock(): WritableComputedRef { if (!isLocked.value) return useEvents ? unlockEvents() : unlockOverflow() isLocked.value = false + + window.scrollTo(0, scrollY) } onScopeDispose(unlock) diff --git a/src/client/theme-default/styles/components/vp-doc.css b/src/client/theme-default/styles/components/vp-doc.css index ec6a34692..9b7cb9510 100644 --- a/src/client/theme-default/styles/components/vp-doc.css +++ b/src/client/theme-default/styles/components/vp-doc.css @@ -620,3 +620,7 @@ content: '\2060'; color: currentColor; } + +html { + scrollbar-gutter: stable; +}