Closed didoee closed 1 year ago
想知道你是如何根据md的标题提取sidebar的
sidebar可以分为左侧导航栏与右侧文章内的导航栏
左侧导航栏:
根据 .vitepress/config.ts 中配置的 sidebar 内容提取得到的,左侧导航栏与 md 文件的标题没有直接关联。
可通过调用 vitepress 中 sidebar 中方法得到左侧导航栏数据 const { sidebar, hasSidebar } = useSidebar()
vitepress 中 sidebar.ts 源码文件
文章内导航:
根据 md 文件中的#标题来决定的,可通过 vitepress 中 useData 获取当前文章的所有导航
import { useData } from 'vitepress'
const { page, frontmatter, theme } = useData()
// ....
v-for="{ title, link, children } in page.headers"
对于点击导航跳转是通过操作 dom 实现的
function handleClick({ target: el }: Event) {
const id = '#' + (el as HTMLAnchorElement).href!.split('#')[1]
const heading = document.querySelector<HTMLAnchorElement>(
decodeURIComponent(id)
)
heading?.focus()
}
好的,感谢
如何根据md的标题提取sidebar