Skip to content

Menu 菜单

收起展开菜单,适合有多级层级关系的菜单展示。

基础用法

  • 处理中心
  • 我的工作台
  • 消息中心
  • 订单管理
vue
<template>
  <x-menu v-model="activeIndex">
    <x-menu-item index="1">处理中心</x-menu-item>
    <x-menu-item index="2">我的工作台</x-menu-item>
    <x-menu-item index="3">消息中心</x-menu-item>
  </x-menu>
</template>

<script setup>
import { ref } from 'vue'
const activeIndex = ref('1')
</script>

水平菜单

  • 处理中心
  • 我的工作台
  • 消息中心
vue
<template>
  <x-menu v-model="activeIndex" mode="horizontal">
    <x-menu-item index="1">处理中心</x-menu-item>
    <x-menu-item index="2">我的工作台</x-menu-item>
  </x-menu>
</template>

子菜单 SubMenu

使用 x-sub-menu 组件实现多级嵌套菜单。

  • 处理中心
  • 我的工作台
  • 消息中心
  • 订单管理
vue
<template>
  <x-menu v-model="activeIndex">
    <x-menu-item index="1">处理中心</x-menu-item>
    <x-sub-menu index="2" title="我的工作台">
      <x-menu-item index="2-1">选项1</x-menu-item>
      <x-menu-item index="2-2">选项2</x-menu-item>
      <x-menu-item index="2-3">选项3</x-menu-item>
    </x-sub-menu>
    <x-sub-menu index="3" title="消息中心">
      <x-menu-item index="3-1">系统消息</x-menu-item>
      <x-menu-item index="3-2">用户消息</x-menu-item>
    </x-sub-menu>
  </x-menu>
</template>

侧栏菜单

结合布局组件实现完整的侧边栏导航。

使用 icon 属性

通过 icon 属性直接指定图标名称,组件会自动使用 Icon 组件渲染。

  • 首页
  • 系统管理
  • 数据中心
  • 日志管理

点击按钮切换侧栏折叠状态

vue
<template>
  <div style="display: flex; height: 100%;">
    <x-menu v-model="activeIndex" :collapse="isCollapse">
      <x-menu-item index="1" icon="home">首页</x-menu-item>
      <x-sub-menu index="2" icon="system" title="系统管理">
        <x-menu-item index="2-1">用户管理</x-menu-item>
        <x-menu-item index="2-2">角色管理</x-menu-item>
        <x-menu-item index="2-3">权限管理</x-menu-item>
      </x-sub-menu>
      <x-sub-menu index="3" icon="chart" title="数据中心">
        <x-menu-item index="3-1">数据概览</x-menu-item>
        <x-menu-item index="3-2">报表中心</x-menu-item>
      </x-sub-menu>
      <x-menu-item index="4" icon="log">日志管理</x-menu-item>
    </x-menu>
    <div style="flex: 1;">内容区域</div>
  </div>
</template>

<script setup>
import { ref } from 'vue'

const activeIndex = ref('1')
const isCollapse = ref(false)
</script>

自定义图标

如果需要自定义图标样式或使用自定义图标,可以使用 #icon 插槽。

  • 首页
  • 系统管理
  • 日志管理
vue
<template>
  <x-menu v-model="activeIndex" :collapse="isCollapse">
    <x-menu-item index="1">
      <template #icon><x-icon name="home" :size="20" color="#409eff" /></template>
      首页
    </x-menu-item>
    <x-sub-menu index="2">
      <template #icon><x-icon name="system" :size="20" color="#67c23a" /></template>
      <template #title>系统管理</template>
      <x-menu-item index="2-1">用户管理</x-menu-item>
    </x-sub-menu>
  </x-menu>
</template>

可用菜单图标

以下图标适合用于菜单导航:

图标名称适用场景
home首页
dashboard仪表盘
system系统管理
user-manage用户管理
role角色管理
permission权限管理
chart数据图表
chart-pie饼图
chart-line折线图
report报表
analytics数据分析
log日志
notification通知
app应用
sidebar-fold收起侧栏
sidebar-expand展开侧栏

水平菜单 + 子菜单

  • 处理中心
  • 我的工作台
  • 消息中心
  • 订单管理
vue
<template>
  <x-menu v-model="activeIndex" mode="horizontal">
    <x-menu-item index="1">处理中心</x-menu-item>
    <x-sub-menu index="2" title="我的工作台">
      <x-menu-item index="2-1">选项1</x-menu-item>
      <x-menu-item index="2-2">选项2</x-menu-item>
    </x-sub-menu>
  </x-menu>
</template>

API

属性说明类型默认值
modelValue / v-model当前激活菜单的 indexstring
mode模式'horizontal' | 'vertical''vertical'
collapse是否水平折叠收起菜单booleanfalse
backgroundColor菜单背景色string'#fff'
textColor文字颜色string'#303133'
activeTextColor激活文字颜色string'#409eff'
defaultOpeneds默认展开的 SubMenu 索引数组string[][]
router是否使用 vue-router 模式booleanfalse
事件名说明回调参数
select菜单激活时触发(index: string, indexPath: string[])
openSubMenu 展开时触发(index: string, indexPath: string[])
closeSubMenu 收起时触发(index: string, indexPath: string[])
属性说明类型默认值
index唯一标识string
disabled是否禁用booleanfalse
icon图标名称,传入 Icon 组件支持的图标名string
插槽名说明
default菜单项文字内容
icon自定义图标内容,优先级高于 icon 属性
属性说明类型默认值
index唯一标识string
title子菜单标题string
disabled是否禁用booleanfalse
icon图标名称,传入 Icon 组件支持的图标名string
插槽名说明
default菜单项内容
title自定义标题内容
icon自定义图标内容,优先级高于 icon 属性
属性说明类型默认值
title分组标题string

基于 MIT 许可发布