Skip to content

NavMenu 导航菜单 ​

为网站提供导航功能的菜单,支持顶栏、侧栏和折叠模式。

顶栏导航 ​

水平顶栏导航,支持 logo 和右侧操作区。

vue
<my-nav-menu mode="horizontal" default-active="home">
  <template #logo><span>My UI</span></template>
  <my-nav-item index="home">首页</my-nav-item>
  <my-nav-item index="products">产品</my-nav-item>
  <my-nav-item index="services">服务</my-nav-item>
  <my-nav-item index="about">关于</my-nav-item>
  <template #actions>
    <button>登录</button>
    <button>注册</button>
  </template>
</my-nav-menu>

左右布局 ​

通过 #logo 和 #actions 插槽实现左中右分区布局。

vue
<my-nav-menu mode="horizontal" default-active="overview">
  <template #logo><!-- 侧边栏图标 + 标题 --></template>
  <my-nav-item index="overview">概览</my-nav-item>
  <my-nav-item index="users">用户管理</my-nav-item>
  <my-nav-item index="settings">系统设置</my-nav-item>
  <template #actions><!-- 通知铃铛 + 用户头像 --></template>
</my-nav-menu>

侧栏导航 ​

垂直侧栏模式,适合管理后台。

概览页面
vue
<my-nav-menu mode="vertical" default-active="overview" title="管理后台">
  <my-nav-item index="overview" icon="...">概览</my-nav-item>
  <my-nav-item index="users" icon="...">用户管理</my-nav-item>
  <my-nav-item index="orders" icon="...">订单</my-nav-item>
  <my-nav-item index="settings" icon="...">设置</my-nav-item>
</my-nav-menu>

折叠面板 ​

垂直侧栏支持 collapsed 属性折叠为仅图标模式。

当前状态:已展开

vue
<my-nav-menu mode="vertical" v-model:collapsed="collapsed" default-active="overview" title="管理后台">
  <my-nav-item index="overview" icon="...">概览</my-nav-item>
  <my-nav-item index="users" icon="...">用户管理</my-nav-item>
  <my-nav-item index="orders" icon="...">订单</my-nav-item>
  <my-nav-item index="settings" icon="...">设置</my-nav-item>
</my-nav-menu>

带子菜单 ​

使用 <my-nav-submenu> 实现二级菜单。

点击左侧子菜单查看选项

vue
<my-nav-menu mode="vertical" default-active="guide" title="文档">
  <my-nav-item index="guide" icon="...">快速开始</my-nav-item>
  <my-nav-submenu title="基础组件" icon="..." :offset="4">
    <my-nav-item index="button">Button 按钮</my-nav-item>
    <my-nav-item index="input">Input 输入框</my-nav-item>
    <my-nav-item index="select">Select 选择器</my-nav-item>
  </my-nav-submenu>
  <my-nav-submenu title="数据展示" icon="..." :offset="4">
    <my-nav-item index="table">Table 表格</my-nav-item>
    <my-nav-item index="card">Card 卡片</my-nav-item>
  </my-nav-submenu>
  <my-nav-item index="help" icon="...">帮助</my-nav-item>
</my-nav-menu>

弹出层偏移量 ​

通过 offset 属性控制子菜单弹出时的位置偏移,用于调整弹出层与触发器的距离。

offset=0(紧贴触发器)

offset=8(常用间距,稍远离)

offset="[6, 12]"(同时偏移X和Y)

vue
<my-nav-submenu title="产品" :offset="8">
  <my-nav-item index="a">选项一</my-nav-item>
  <my-nav-item index="b">选项二</my-nav-item>
</my-nav-submenu>

<!-- 双向偏移 X=6px, Y=10px -->
<my-nav-submenu title="产品" :offset="[6, 10]">
  <my-nav-item index="a">选项一</my-nav-item>
</my-nav-submenu>

顶栏子菜单 ​

水平顶栏也支持子菜单下拉。

vue
<my-nav-menu mode="horizontal">
  <template #logo>Brand</template>
  <my-nav-item index="home">首页</my-nav-item>
  <my-nav-submenu title="产品服务">
    <my-nav-item index="saas">SaaS 平台</my-nav-item>
    <my-nav-item index="api">API 服务</my-nav-item>
    <my-nav-item index="enterprise">企业版</my-nav-item>
  </my-nav-submenu>
  <my-nav-submenu title="资源中心" :offset="[0, 6]">
    <my-nav-item index="docs">帮助文档</my-nav-item>
    <my-nav-item index="blog">博客文章</my-nav-item>
  </my-nav-submenu>
  <my-nav-item index="pricing">定价</my-nav-item>
</my-nav-menu>

禁用项 ​

vue
<my-nav-item index="b" disabled>禁用项</my-nav-item>

组件结构 ​

<nav> 根元素在水平模式下包含 logo 插槽、菜单主体(my-nav-menu__body,含 <my-nav-item> 和 <my-nav-submenu> 子组件)和 actions 插槽;垂直模式下包含 header(标题 + 折叠按钮)和菜单主体。子菜单通过悬浮或点击展开弹出面板。

CSS 类名 ​

类名说明
.my-nav-menu根元素
.my-nav-menu--horizontal顶栏模式
.my-nav-menu--vertical侧栏模式
.is-collapsed折叠状态(侧栏)
.my-nav-menu__logoLogo 区域(顶栏)
.my-nav-menu__header侧栏头部
.my-nav-menu__title侧栏标题
.my-nav-menu__collapse-btn折叠按钮
.my-nav-menu__body菜单主体
.my-nav-menu__actions右侧操作区(顶栏)
.my-nav-item菜单项
.is-active激活状态
.is-disabled禁用状态
.my-nav-item__icon菜单项图标
.my-nav-item__label菜单项文字
.my-nav-submenu子菜单容器
.is-open展开状态
.my-nav-submenu__title子菜单标题
.my-nav-submenu__arrow箭头图标
.my-nav-submenu__popup弹出面板
.-fade-*弹出面板过渡动画

API ​

属性说明类型默认值
mode菜单模式'horizontal' | 'vertical''horizontal'
collapsed折叠状态(v-model,仅 vertical)booleanfalse
defaultActive默认激活的菜单项 indexstring—
backgroundColor背景色string--my-bg-color
textColor文字颜色string--my-color-text-primary
activeTextColor激活项文字颜色string--my-color-text-primary
width展开宽度(仅 vertical)string'240px'
collapseWidth折叠宽度(仅 vertical)string'64px'
title侧栏标题string—
事件说明回调
update:collapsed折叠状态变更(collapsed: boolean)
select菜单项选中(index: string)
名称说明作用域
default菜单项—
logo顶栏左侧 logo 区域(horizontal)—
actions顶栏右侧操作区(horizontal)—
header侧栏头部(vertical){ collapsed }
属性说明类型默认值
index唯一标识(必填)string—
disabled禁用booleanfalse
iconSVG 图标字符串string—
to链接地址(渲染为 <a>)string—
事件说明回调
click点击事件(index: string)
名称说明
default菜单项文本
icon图标
属性说明类型默认值
title子菜单标题string—
iconSVG 图标字符串string—
disabled禁用booleanfalse
offset弹出层偏移量number | [number, number]—
名称说明
default子菜单项
title标题内容
icon图标