11<script lang="ts" setup>
22import { useWindowScroll } from ' @vueuse/core'
33import { onContentUpdated } from ' vitepress'
4- import { computed , shallowRef } from ' vue'
4+ import { computed , shallowRef , ref , onMounted } from ' vue'
55import { useData } from ' ../composables/data'
66import { useSidebar } from ' ../composables/sidebar'
77import { getHeaders , type MenuItem } from ' ../composables/outline'
@@ -21,6 +21,15 @@ const { hasSidebar } = useSidebar()
2121const { y } = useWindowScroll ()
2222
2323const headers = shallowRef <MenuItem []>([])
24+ const navHeight = ref (0 )
25+
26+ onMounted (() => {
27+ navHeight .value = parseInt (
28+ getComputedStyle (document .documentElement ).getPropertyValue (
29+ ' --vp-nav-height'
30+ )
31+ )
32+ })
2433
2534onContentUpdated (() => {
2635 headers .value = getHeaders (frontmatter .value .outline ?? theme .value .outline )
@@ -34,14 +43,14 @@ const classes = computed(() => {
3443 return {
3544 VPLocalNav: true ,
3645 fixed: empty .value ,
37- ' reached-top' : y .value >= 64
46+ ' reached-top' : y .value >= navHeight . value
3847 }
3948})
4049 </script >
4150
4251<template >
4352 <div
44- v-if =" frontmatter.layout !== 'home' && (!empty || y >= 64 )"
53+ v-if =" frontmatter.layout !== 'home' && (!empty || y >= navHeight )"
4554 :class =" classes"
4655 >
4756 <button
@@ -57,7 +66,7 @@ const classes = computed(() => {
5766 </span >
5867 </button >
5968
60- <VPLocalNavOutlineDropdown :headers =" headers" />
69+ <VPLocalNavOutlineDropdown :headers =" headers" :navHeight = " navHeight " />
6170 </div >
6271</template >
6372
0 commit comments