Skip to content

导航

导航是显示在页面顶部的导航栏。它包含站点标题、全局菜单链接等。

默认情况下,导航显示 config.title 的值作为站点的标题。如果你想更改导航上显示的内容,可以在 themeConfig.siteTitle 选项中定义自定义文本。

js
export default {
  themeConfig: {
    siteTitle: 'My Custom Title'
  }
}

如果你有站点的 logo,可以通过传递图像的路径来显示它。你应该将 logo 直接放在 public 中,并定义它的绝对路径。

js
export default {
  themeConfig: {
    logo: '/my-logo.svg'
  }
}

添加 logo 时,它会与站点标题一起显示。如果你的 logo 就是你想要的,并且你想隐藏站点标题文本,请将 siteTitle 选项设置为 false

js
export default {
  themeConfig: {
    logo: '/my-logo.svg',
    siteTitle: false
  }
}

如果你想添加 alt 属性或基于深色/浅色模式自定义,你也可以将 logo 作为对象传递。有关详细信息,请参阅 themeConfig.logo

导航链接

你可以定义 themeConfig.nav 选项以向导航添加链接。

js
export default {
  themeConfig: {
    nav: [
      { text: 'Guide', link: '/guide' },
      { text: 'Config', link: '/config' },
      { text: 'Changelog', link: 'https://github.com/...' }
    ]
  }
}

text 是在导航中显示的实际文本,link 是单击文本时将导航到的链接。对于链接,将路径设置为不带 .md 前缀的实际文件,并且它始终以 / 开头。

导航链接也可以是下拉菜单。为此,请在链接选项上设置 items 键。

js
export default {
  themeConfig: {
    nav: [
      { text: 'Guide', link: '/guide' },
      {
        text: 'Dropdown Menu',
        items: [
          { text: 'Item A', link: '/item-1' },
          { text: 'Item B', link: '/item-2' },
          { text: 'Item C', link: '/item-3' }
        ]
      }
    ]
  }
}

请注意,下拉菜单标题(上面示例中的 Dropdown Menu)不能有 link 属性,因为它变成了打开下拉对话框的按钮。

你还可以通过传递更多嵌套项来向下拉菜单项添加"部分"。

js
export default {
  themeConfig: {
    nav: [
      { text: 'Guide', link: '/guide' },
      {
        text: 'Dropdown Menu',
        items: [
          {
            // 该部分的标题
            text: 'Section A Title',
            items: [
              { text: 'Section A Item A', link: '...' },
              { text: 'Section B Item B', link: '...' }
            ]
          }
        ]
      },
      {
        text: 'Dropdown Menu',
        items: [
          {
            // 你也可以省略标题
            items: [
              { text: 'Section A Item A', link: '...' },
              { text: 'Section B Item B', link: '...' }
            ]
          }
        ]
      }
    ]
  }
}

自定义链接的"活动"状态

当前页面位于匹配路径下时,导航菜单项将突出显示。如果你希望自定义要匹配的路径,请将 activeMatch 属性和正则表达式定义为字符串值。

js
export default {
  themeConfig: {
    nav: [
      // 当用户位于 `/config/` 路径时,此链接将处于活动状态
      {
        text: 'Guide',
        link: '/guide',
        activeMatch: '/config/'
      }
    ]
  }
}

警告

activeMatch 应该是正则表达式字符串,但你必须将其定义为字符串。我们不能在这里使用实际的 RegExp 对象,因为它在构建时不可序列化。

自定义链接的"target"和"rel"属性

默认情况下,VitePress 会根据链接是否为外部链接来自动确定 targetrel 属性。但如果你愿意,你也可以自定义它们。

js
export default {
  themeConfig: {
    nav: [
      {
        text: 'Merchandise',
        link: 'https://www.thegithubshop.com/',
        target: '_self',
        rel: 'sponsored'
      }
    ]
  }
}

社交链接

请参考 socialLinks

自定义组件

你可以用自定义组件替换整个导航组件。为此,你需要在主题配置的 nav 插槽中定义组件。

js
// .vitepress/theme/index.js
import DefaultTheme from 'vitepress/theme'
import CustomNav from './CustomNav.vue'

export default {
  extends: DefaultTheme,
  Layout() {
    return h(DefaultTheme.Layout, null, {
      'nav-bar-title-before': () => h(CustomNav)
    })
  }
}

你也可以通过插槽向导航添加组件。可用的插槽有:

  • nav-bar-title-before
  • nav-bar-title-after
  • nav-bar-content-before
  • nav-bar-content-after
  • nav-screen-content-before
  • nav-screen-content-after

国际化

要了解如何国际化导航,请参阅 i18n 指南

vitepress开发指南