Skip to content

导航菜单

@astryxdesign/core v0.7.1 · NavMenu

使用方法 ​

NavMenu 是 role="menu" 的菜单。NavMenuItem 是其中一项,有 href 时是链接。NavDisclosure 负责触发按钮、定位和关闭:点击、悬停、点击外部和 Escape 都会关掉。ArrowDown 打开并聚焦第一项,ArrowUp 聚焦最后一项。菜单内部方向键移动,单字符会按前缀匹配。

顶栏和溢出列表已经包好了这组零件。需要自己做账号菜单时直接用它们。

挂在侧栏或顶栏标题上的菜单用 NavHeadingMenu 和 NavHeadingMenuItem。把它放进标题的 menu 插槽即可,关闭和打开后的焦点由标题负责。有地址的项是链接,没有地址的项是 menuitem。方向键移动,Enter 或 Space 激活当前项。

vue
<script setup lang="ts">
import { NavDisclosure, NavMenu, NavMenuItem } from '@astryx-vue/core/NavMenu'
</script>

<template>
  <NavDisclosure label="账号">
    <template #trigger="{ isOpen, panelId }">
      <button type="button" :aria-controls="panelId" :aria-expanded="isOpen">
        账号
      </button>
    </template>
    <template #default="{ close, focusRequest }">
      <NavMenu label="账号" :focus-request="focusRequest" @close="close">
        <NavMenuItem href="/profile" label="个人资料" />
      </NavMenu>
    </template>
  </NavDisclosure>
</template>

最佳实践 ​

指引实践
推荐触发按钮写上 aria-expanded 和 aria-controls,插槽已经把状态传出来了。
推荐选中一项后默认关闭。需要留下菜单时给项设置 keepOpen。
避免不要把菜单项单独放进抽屉。抽屉里把 isMenuItem 设成 false,避免菜单项脱离菜单。

示例 ​

产品切换

侧栏标题打开产品切换菜单,里面是 Dashboard、Analytics 和 Settings。