Menu 菜单

为页面和功能提供导航的菜单列表,支持子菜单、分组、折叠、暗色主题、手风琴模式、徽标、Logo 插槽等。

综合示例
包含 Logo、徽标、子菜单、分组、折叠切换的完整侧边栏演示。
首页New
仪表盘
组件
系统管理
用户管理
角色管理
设置
我的5
首页New
仪表盘
组件
系统管理
用户管理
角色管理
设置
我的5
基础用法
通过 items 定义菜单项,v-model 绑定当前选中项。
首页
搜索
设置
我的
当前选中:shouye
带 Logo
使用 #logo 插槽自定义顶部品牌区域,折叠时自动隐藏文字。
首页
搜索
设置
我的
首页
首页
搜索
搜索
设置
设置
我的
我的
徽标 Badge
通过 badge 字段为菜单项添加徽标。
首页New
消息3
设置
我的
子菜单
支持 children 配置子菜单,点击展开/收起。
首页
组件
系统
我的
菜单分组
通过 type: 'group' 创建菜单分组,分组标题不可选中。
基础组件
输入框
按钮
选择器
数据展示
表格
树形控件
导航
菜单
标签页
暗色主题
设置 theme 为 dark 使用暗色主题,文字自动切换为白色。
首页
组件
设置
我的
暗色主题 + 分组
暗色主题下菜单分组同样正确显示白色文字。
基础组件
输入框
按钮
选择器
数据展示
表格
树形控件
导航
菜单
标签页
手风琴模式
设置 accordion 后,同一时刻只有一个子菜单展开。
首页
组件
系统
我的
折叠模式
设置 collapsed 让菜单仅显示图标,hover 时弹出 tooltip。
首页
首页
组件
系统
我的
我的
首页
组件
系统
我的
水平模式
设置 mode 为 horizontal 水平排列,子菜单以下拉方式展开。
首页
组件
设置
我的
水平暗色模式
水平菜单同样支持暗色主题。
首页
组件
设置
我的
默认展开
通过 defaultOpenKeys 设置默认展开的子菜单。
首页
组件
表单
数据展示
导航
系统
我的
禁用菜单项
设置 disabled 禁用某个菜单项。
首页
搜索
设置
不可选中
设置 selectable: false 使菜单项不可选中(仍可点击触发 select 事件)。
首页(可选中)
关于(不可选中)
文档
当前选中:
分割线与自定义缩进
插入 { divider: true } 显示分割线;inlineIndent 控制缩进。
首页
搜索
设置
我的
底部插槽
使用 #footer 插槽在菜单底部添加内容。
首页
组件
系统
我的
事件回调
监听 select 和 openChange 事件。
首页
组件
系统
我的
select:—
openChange:—
受控展开
通过 v-model:open-keys 受控管理展开的子菜单。
首页
组件
表单
数据展示
导航
系统
我的
折叠切换
通过 #footer 插槽放置折叠按钮,点击即可展开/收起侧边栏。
首页
组件
系统
我的

Props

参数类型默认值说明
modelValuestring | number当前选中项 key(v-model)
itemsMenuItem[]菜单项数据(必填)
mode'vertical' | 'horizontal''vertical'菜单模式
theme'light' | 'dark''light'主题风格
collapsedbooleanfalse是否折叠(仅垂直模式)
accordionbooleanfalse手风琴模式
defaultOpenKeys(string | number)[][]默认展开子菜单(非受控)
openKeys(string | number)[]受控展开子菜单(v-model:open-keys)
inlineIndentnumber16菜单项缩进(px)
popupClassNamestring''水平模式下弹出菜单自定义类名
widthstring | number菜单宽度

MenuItem 类型

属性类型说明
keystring | number唯一标识
labelstring标题
iconstring图标名称
disabledboolean是否禁用
dividerboolean是否为分割线
selectableboolean是否可选中,默认 true
type'group'设为 "group" 创建分组
badgestring | number徽标内容
childrenMenuItem[]子菜单或分组子项

Events

事件名类型说明
update:modelValue(key: string | number) => void选中项变化
select(key: string | number, item: MenuItem) => void选择菜单项
update:openKeys(keys: (string|number)[]) => void展开变化
openChange(keys: (string|number)[]) => void展开变化

Slots

插槽名说明
logo顶部品牌/Logo 区域,参数 { collapsed }
footer菜单底部区域,参数 { collapsed },常用于折叠按钮或用户信息