feat: improve hash target positioning upon initial navigation
This commit is contained in:
@@ -4,6 +4,22 @@ function timeout (t) {
|
||||
})
|
||||
}
|
||||
|
||||
let paddingTopInPixels = null
|
||||
function getScrollPaddingTopInPixels () {
|
||||
if (paddingTopInPixels !== null) {
|
||||
return paddingTopInPixels
|
||||
}
|
||||
const measurer = document.createElement('div')
|
||||
const paddingTop = getComputedStyle(document.documentElement).scrollPaddingTop
|
||||
measurer.style.position = 'absolute'
|
||||
measurer.style.visibility = 'hidden'
|
||||
measurer.style.height = paddingTop
|
||||
document.body.appendChild(measurer)
|
||||
paddingTopInPixels = measurer.offsetHeight
|
||||
measurer.remove()
|
||||
return paddingTopInPixels
|
||||
}
|
||||
|
||||
export default async function scrollBehavior (to) {
|
||||
if (to.hash) {
|
||||
// scroll to anchor by returning the selector
|
||||
@@ -11,7 +27,7 @@ export default async function scrollBehavior (to) {
|
||||
return {
|
||||
selector: decodeURIComponent(to.hash),
|
||||
offset: {
|
||||
y: 120
|
||||
y: getScrollPaddingTopInPixels()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user