From: Joost Kersjes Date: Fri, 25 Apr 2025 12:54:29 +0000 (+0200) Subject: docs: add advanced offsets content for scrollBehavoir (#2448) X-Git-Tag: v4.5.1~1 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=56b5cbb6de8f26228cbeb23b5f77f41da3920430;p=thirdparty%2Fvuejs%2Frouter.git docs: add advanced offsets content for scrollBehavoir (#2448) Co-authored-by: Eduardo San Martin Morote --- diff --git a/packages/docs/guide/advanced/scroll-behavior.md b/packages/docs/guide/advanced/scroll-behavior.md index b4f76640..2bc2b260 100644 --- a/packages/docs/guide/advanced/scroll-behavior.md +++ b/packages/docs/guide/advanced/scroll-behavior.md @@ -92,7 +92,7 @@ const router = createRouter({ behavior: 'smooth', } } - } + }, }) ``` @@ -113,3 +113,29 @@ const router = createRouter({ ``` It's possible to hook this up with events from a page-level transition component to make the scroll behavior play nicely with your page transitions, but due to the possible variance and complexity in use cases, we simply provide this primitive to enable specific userland implementations. + +## Advanced offsets + +If your page has a fixed navbar or similar elements, you might need an offset to ensure the target element isn't hidden behind other content. +Using a static offset value may not always work. You might try CSS-based solutions, like adding offsets with `scroll-margin` or `scroll-padding`, or using `::before` and `::after` pseudo-elements. However, these approaches can lead to unexpected behavior. + +In such cases, it's better to calculate the offset manually. A simple way to do this is by combining CSS with JavaScript's `getComputedStyle()`. This lets each element define its own offset dynamically. Here's an example: + +```js +const router = createRouter({ + scrollBehavior(to, from, savedPosition) { + const mainElement = document.querySelector('#main') + if (mainElement) { + const marginTop = parseFloat( + getComputedStyle(mainElement).scrollMarginTop + ) + return { + el: mainElement, + top: marginTop, + } + } else { + return { top: 0 } + } + }, +}) +``` diff --git a/packages/docs/zh/guide/advanced/scroll-behavior.md b/packages/docs/zh/guide/advanced/scroll-behavior.md index f0d77b19..86a3d445 100644 --- a/packages/docs/zh/guide/advanced/scroll-behavior.md +++ b/packages/docs/zh/guide/advanced/scroll-behavior.md @@ -1,4 +1,5 @@ # 滚动行为 +