el-menu 是 Element Plus 框架中的一个导航菜单组件,用于创建各种类型的导航菜单。它可以是水平的或垂直的,并支持多种配置选项以满足不同的需求。
一。el-menu 属性详解
-
mode:
- 用途: 菜单的模式,可选值为
horizontal或vertical。 - 默认值:
vertical
- 用途: 菜单的模式,可选值为
-
default-active:
- 用途: 当前激活菜单的 index。
-
default-openeds:
- 用途: 当前打开的 sub-menu 的 index 的数组。
- 默认值:
[]
-
unique-opened:
- 用途: 是否只保持一个子菜单展开。
- 默认值:
false
-
router:
- 用途: 是否使用 vue-router 的模式,启用该模式会在激活导航时以 index 作为 path 进行路由跳转。
- 默认值:
false
-
collapse:
- 用途: 是否水平折叠收起菜单(仅在 mode 为 vertical 时可用)。
- 默认值:
false
-
background-color:
- 用途: 菜单的背景色。
-
text-color:
- 用途: 菜单的文字颜色。
-
active-text-color:
- 用途: 当前激活菜单的文字颜色。
-
open-delay:
- 用途: 子菜单打开的延迟时间(单位毫秒)。
- 默认值:
300
-
close-delay:
- 用途: 子菜单关闭的延迟时间(单位毫秒)。
- 默认值:
300
二。 el-menu 事件详解
-
select:
- 类型:
Function - 用途: 菜单项被点击时触发的回调函数。
- 参数:
index(被点击菜单项的 index)、indexPath(被点击菜单项的 indexPath)
- 类型:
三。 el-menu 插槽详解
-
default:
- 插槽名称:
default - 用途: 自定义菜单项的内容。
- 插槽名称:
四。 el-submenu 属性详解
-
index:
- 用途: 唯一标识符。
-
show-timeout:
- 用途: 子菜单展开的延迟时间(单位毫秒)。
- 默认值:
300
-
hide-timeout:
- 用途: 子菜单关闭的延迟时间(单位毫秒)。
- 默认值:
300
五。 el-menu-item 属性详解
-
index:
- 用途: 唯一标识符。
-
route:
- 用途: 导航链接的目标路径对象。
六。实例
<template>
<div>
<h2>Menu 示例</h2>
<!-- 基本用法 -->
<el-menu default-active="2" class="el-menu-vertical-demo" @select="handleSelect">
<el-menu-item index="1">
<i class="el-icon-menu"></i>
<span slot="title">导航一</span>
</el-menu-item>
<el-submenu index="2">
<template slot="title">
<i class="el-icon-location"></i>
<span>导航二</span>
</template>
<el-menu-item index="2-1">选项1</el-menu-item>
<el-menu-item index="2-2">选项2</el-menu-item>
</el-submenu>
<el-menu-item index="3" disabled>
<i class="el-icon-document"></i>
<span slot="title">导航三</span>
</el-menu-item>
</el-menu>
<!-- 水平模式 -->
<el-menu :default-active="activeIndex" class="el-menu-demo" mode="horizontal" @select="handleSelect">
<el-menu-item index="1">处理中心</el-menu-item>
<el-submenu index="2">
<template slot="title">我的工作台</template>
<el-menu-item index="2-1">选项1</el-menu-item>
<el-menu-item index="2-2">选项2</el-menu-item>
</el-submenu>
<el-menu-item index="3" disabled>消息中心</el-menu-item>
</el-menu>
<!-- 垂直模式 -->
<el-menu default-active="2" class="el-menu-vertical-demo" :collapse="isCollapse">
<el-menu-item index="1">
<i class="el-icon-menu"></i>
<span slot="title">导航一</span>
</el-menu-item>
<el-submenu index="2">
<template slot="title">
<i class="el-icon-location"></i>
<span>导航二</span>
</template>
<el-menu-item index="2-1">选项1</el-menu-item>
<el-menu-item index="2-2">选项2</el-menu-item>
</el-submenu>
<el-menu-item index="3" disabled>
<i class="el-icon-document"></i>
<span slot="title">导航三</span>
</el-menu-item>
</el-menu>
<!-- 使用 router 模式 -->
<el-menu :default-active="$route.path" router>
<el-menu-item index="/">
<i class="el-icon-menu"></i>
<span slot="title">首页</span>
</el-menu-item>
<el-submenu index="/about">
<template slot="title">
<i class="el-icon-location"></i>
<span>关于我们</span>
</template>
<el-menu-item index="/about/team">团队介绍</el-menu-item>
<el-menu-item index="/about/contact">联系我们</el-menu-item>
</el-submenu>
</el-menu>
<!-- 自定义样式 -->
<el-menu :default-active="activeIndex" class="custom-menu" mode="horizontal" @select="handleSelect">
<el-menu-item index="1">处理中心</el-menu-item>
<el-submenu index="2">
<template slot="title">我的工作台</template>
<el-menu-item index="2-1">选项1</el-menu-item>
<el-menu-item index="2-2">选项2</el-menu-item>
</el-submenu>
<el-menu-item index="3" disabled>消息中心</el-menu-item>
</el-menu>
</div>
</template>
<script setup>
import { ref } from 'vue'
const activeIndex = ref('1')
const isCollapse = ref(false)
const handleSelect = (key, keyPath) => {
console.log(key, keyPath)
}
</script>