【Vue3 博物馆管理系统】使用Vue3、Element-plus菜单组件构建前台用户菜单

系列文章目录

第一章 定制上中下(顶部菜单、底部区域、中间主区域显示)三层结构首页
第二章 使用Vue3、Element-plus菜单组件构建菜单
[第三章 使用Vue3、Element-plus菜单组件构建轮播图]
[第四章 使用Vue3、Element-plus菜单组件构建组图文章]


在这里插入图片描述

前言

上一章节给我们把博物馆管理系统打了个地基,基本的产品架构和框架已经都落实到位。
这一章节,我们做1件事:构建顶部区域的菜单,包括父子菜单
在这里插入图片描述

1、学习Element-plus 的导航组件 NavMenu 导航菜单

1.1、NavMenu 导航菜单

为网站提供导航功能的菜单

1.2、横向导航菜单

导航菜单默认为垂直模式,通过mode属性可以使导航菜单变更为水平模式。
上一章节我们的页面布局,顶部采用横向导航菜单布局,也就是水平模式的菜单,因此需要水平模式的导航菜单。话不多说,上代码。

<el-menu
            :default-active="1"
            class="el-menu-demo"
            mode="horizontal"
            active-text-color="#409eff"
            router
            :collapse="false"
        >
        ....................
</el-menu>

1.3、完整的顶部区域数据和效果展示

在这里插入图片描述

	<!-- 顶栏容器 -->
      <el-header style="margin-top: 10px;">
        <el-menu
            :default-active="1"
            class="el-menu-demo"
            mode="horizontal"
            active-text-color="#409eff"
            router
            :collapse="false"
        >
          <div class="logo" style="width: 10%;" >
            <router-link to="/">
              <span style="width: 240px; position: absolute; top: 20px; left: 60px; ">罗刹海市博物馆</span>
              <img  src="./assets/logo.png" style="height: 50px;" alt />
            </router-link>
          </div>
          <el-menu-item index="/" >首页</el-menu-item>
          <el-sub-menu index="/about" >关于我们</el-sub-menu>
           <el-menu-item index="/clzl">陈列展览</el-menu-item>
          <el-menu-item index="/sc">收藏</el-menu-item>
          <el-menu-item index="/cg">参观</el-menu-item>
          <el-menu-item index="/hd" > <template #title>活动</template></el-menu-item>
          <el-menu-item index="/xx" >学习</el-menu-item>
          <el-menu-item index="/yj" >研究</el-menu-item>
        </el-menu>
      </el-header>

1.4、再来个子菜单代码和效果

在菜单中通过submenu组件可以生成二级菜单
在这里插入图片描述

	<el-container>
      <!-- 顶栏容器 -->
      <el-header style="margin-top: 10px;">
        <el-menu
            :default-active="1"
            class="el-menu-demo"
            mode="horizontal"
            active-text-color="#409eff"
            router
            :collapse="false"
        >
          <div class="logo" style="width: 10%;" >
            <router-link to="/">
              <span style="width: 240px; position: absolute; top: 20px; left: 60px; ">罗刹海市博物馆</span>
              <img  src="./assets/logo.png" style="height: 50px;" alt />
            </router-link>
          </div>
          <el-menu-item index="/" >首页</el-menu-item>
          <el-sub-menu index="/about" >
            <template #title>关于我们</template>
            <el-menu-item index="/about/gk">概況</el-menu-item>
            <el-menu-item index="/about/ls">历史</el-menu-item>
            <el-menu-item index="/about/zjjs">专家介绍</el-menu-item>
            <el-menu-item index="/about/yzzc">院长致辞</el-menu-item>
            <el-menu-item index="/about/mhgs">幕后故事</el-menu-item>
            <el-menu-item index="/about/bwgzy">博物馆之友</el-menu-item>
            <el-menu-item index="/about/xwzx">新闻资讯</el-menu-item>
          </el-sub-menu>

          <el-menu-item index="/clzl">陈列展览</el-menu-item>
          <el-menu-item index="/sc">收藏</el-menu-item>
          <el-menu-item index="/cg">参观</el-menu-item>
          <el-menu-item index="/hd" > <template #title>活动</template></el-menu-item>
          <el-menu-item index="/xx" >学习</el-menu-item>
          <el-menu-item index="/yj" >研究</el-menu-item>
        </el-menu>
      </el-header>

1.5、学习Menu的API

1.5.1、Menu Attribute

参数说明类型可选值默认值
mode模式stringhorizontal / verticalvertical
collapse是否水平折叠收起菜单(仅在 mode 为 vertical 时可用)booleanfalse
background-color菜单的背景色(仅支持 hex 格式)string#ffffff
text-color菜单的文字颜色(仅支持 hex 格式)string#303133
active-text-color当前激活菜单的文字颜色(仅支持 hex 格式)string#409EFF
default-active当前激活菜单的 indexstring
default-openeds当前打开的 sub-menu 的 index 的数组Array
unique-opened是否只保持一个子菜单的展开booleanfalse
menu-trigger子菜单打开的触发方式(只在 mode 为 horizontal 时有效)stringhover / clickhover
router是否使用 vue-router 的模式,启用该模式会在激活导航时以 index 作为 path 进行路由跳转 booleanfalse
collapse-transition是否开启折叠动画booleantrue

1.5.2、Menu Methods

方法名称说明参数
open展开指定的 sub-menuindex: 需要打开的 sub-menu 的 index
close收起指定的 sub-menuindex: 需要收起的 sub-menu 的 index

1.5.3、Menu Events

事件名称说明回调参数
select菜单激活回调index: 选中菜单项的 index, indexPath: 选中菜单项的 index path
opensub-menu 展开的回调index: 打开的 sub-menu 的 index, indexPath: 打开的 sub-menu 的 index path
closesub-menu 收起的回调index: 收起的 sub-menu 的 index, indexPath: 收起的 sub-menu 的 index path

1.5.4、SubMenu Attribute

参数说明类型可选值默认值
index唯一标志string/nullnull
popper-class弹出菜单的自定义类名string
show-timeout展开 sub-menu 的延时number300
hide-timeout收起 sub-menu 的延时number300
disabled是否禁用 booleanfalse
popper-append-to-body是否将弹出菜单插入至 body 元素。在菜单的定位出现问题时,可尝试修改该属性boolean一级子菜单:true / 非一级子菜单:false

1.5.5、Menu-Item Attribute

参数说明类型可选值默认值
index唯一标志string
routeVue Router路径对象Object
disabled是否禁用booleanfalse

总结

以上就是今天要讲的内容,本文仅仅简单介绍了博物馆管理前台用户导航菜单布局,涉及Element-plus 的菜单,菜单的方向,子菜单,菜单、子菜单的属性、样式等。

  • 13
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论
Element Plus是一个基于Vue.js的UI组件库,它提供了一个易于使用的API来创建复杂的用户界面,包括导航栏和菜单。如果你想要实现多级菜单,可以按照以下步骤操作: 1. **安装Element Plus**: 首先确保已经安装了Vue,并通过npm或yarn将Element Plus添加到项目中: ```bash npm install element-plus @vue/cli-plugin-element-plus # 或者 yarn add element-plus vue-cli-plugin-element-plus ``` 2. **引入组件**: 在你的Vue组件中,需要导入`<el-menu>`及其子组件`<el-submenu>`: ```html <template> <div> <el-menu :default-active="$route.path" router> <!-- 多级菜单 --> <el-submenu v-for="(item, index) in menuItems" :key="index"> <template slot="title">{{ item.title }}</template> <el-menu-item v-for="(subItem, subIndex) in item.subItems" :key="subIndex"> {{ subItem }} </el-menu-item> </el-submenu> </el-menu> </div> </template> ``` 3. **数据驱动**: 创建一个名为`menuItems`的数据属性,包含一级菜单和它们对应的二级菜单: ```js data() { return { menuItems: [ { title: '菜单1', subItems: [ '子菜单1-1', '子菜单1-2' ] }, { title: '菜单2', subItems: [ '子菜单2-1', '子菜单2-2' ] } ] }; } ``` 4. **模板绑定**: 使用`:default-active`属性设置当前激活的菜单项,这里假设你的路由路径与菜单标题相匹配。 5. **调整样式**: 如果需要自定义样式,可以使用Element Plus提供的主题系统或者直接修改CSS。 完整示例: ```html <template> <div> <el-menu :default-active="$route.path" class="menu-demo" router> <el-submenu v-for="(item, index) in menuItems" :key="index" :index="index + 100 * menuItems.length"> <template slot="title">{{ item.title }}</template> <el-menu-item v-for="(subItem, subIndex) in item.subItems" :key="subIndex"> {{ subItem }} </el-menu-item> </el-submenu> </el-menu> </div> </template> <script> export default { data() { return { menuItems: [ { title: '菜单1', subItems: [ '子菜单1-1', '子菜单1-2' ] }, { title: '菜单2', subItems: [ '子菜单2-1', '子菜单2-2' ] } ] }; } }; </script> <style scoped> .menu-demo { /* 根据需求添加样式 */ } </style> ```
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青花科技

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值