Vue实现导航栏菜单

yizhihongxing

我会为您详细讲解如何使用Vue实现导航栏菜单。

1. 确定导航栏菜单数据格式

首先我们需要确定导航栏菜单的数据格式,一般而言可以使用以下格式:

menuList: [
  {
    name: 'Home',
    path: '/',
    icon: 'el-icon-menu'
  },
  {
    name: 'Service',
    path: '/service',
    icon: 'el-icon-star-off'
  },
  {
    name: 'About',
    path: '/about',
    icon: 'el-icon-info'
  }
]

其中,name 代表菜单名称,path 代表菜单链接,icon 代表菜单图标。

2. 创建菜单组件

接下来,我们可以创建一个菜单组件,用于展示导航栏菜单:

<template>
  <el-menu mode="horizontal" :default-active="active" class="app-menu">
    <el-menu-item v-for="item in menuList" :key="item.name" :index="item.path">
      <i :class="item.icon"></i>
      <span slot="title">{{ item.name }}</span>
    </el-menu-item>
  </el-menu>
</template>

<script>
export default {
  name: 'AppMenu',
  props: {
    menuList: {
      type: Array,
      default: () => []
    }
  },
  data() {
    return {
      active: '/'
    }
  },
  methods: {
    handleSelect(key, keyPath) {
      this.active = key;
      this.$router.push(key);
    }
  }
}
</script>

<style scoped>
.app-menu {
  background-color: #fff;
  border-bottom: 1px solid #ebebeb;
}
</style>

其中,我们使用了 Element UI 组件库中的 Menu 组件,通过 props 接收菜单数据,展示菜单列表,并在菜单项选中时切换路由。

3. 在路由中引用菜单组件

最后,在路由配置中引用菜单组件,并传入菜单数据:

import Vue from 'vue';
import VueRouter from 'vue-router';
import AppMenu from './components/AppMenu.vue';
import Home from './views/Home.vue';

Vue.use(VueRouter);

const routes = [
  {
    path: '/',
    component: Home
  },
  {
    path: '/service',
    component: () => import('./views/Service.vue')
  },
  {
    path: '/about',
    component: () => import('./views/About.vue')
  }
];

const router = new VueRouter({
  routes
});

new Vue({
  router,
  render: h => h(App, [
    h(AppMenu, {
      props: {
        menuList: [
          {
            name: 'Home',
            path: '/',
            icon: 'el-icon-menu'
          },
          {
            name: 'Service',
            path: '/service',
            icon: 'el-icon-star-off'
          },
          {
            name: 'About',
            path: '/about',
            icon: 'el-icon-info'
          }
        ]
      }
    }),
    h(App)
  ])
}).$mount('#app');

这样,在页面中就可以看到带有基本样式的导航栏菜单。

示例1

以下是一个示例,在菜单项上添加二级菜单:

menuList: [
  {
    name: 'Home',
    path: '/',
    icon: 'el-icon-menu'
  },
  {
    name: 'Service',
    path: '/service',
    icon: 'el-icon-star-off',
    children: [
      {
        name: 'SubService1',
        path: '/service/sub1'
      },
      {
        name: 'SubService2',
        path: '/service/sub2'
      }
    ]
  },
  {
    name: 'About',
    path: '/about',
    icon: 'el-icon-info'
  }
]

我们可以在菜单组件中添加以下代码实现二级菜单:

<el-submenu v-if="item.children" :index="item.path">
  <template slot="title">
    <i :class="item.icon"></i>
    <span>{{ item.name }}</span>
  </template>
  <el-menu-item v-for="subItem in item.children" :key="subItem.name" :index="subItem.path">
    <span>{{ subItem.name }}</span>
  </el-menu-item>
</el-submenu>

这样,在 Service 菜单项上就有了 SubService1 和 SubService2 两个子菜单。

示例2

以下是另一个示例,在菜单项上添加角标:

menuList: [
  {
    name: 'Home',
    path: '/',
    icon: 'el-icon-menu'
  },
  {
    name: 'Service',
    path: '/service',
    icon: 'el-icon-star-off',
    badge: 4
  },
  {
    name: 'About',
    path: '/about',
    icon: 'el-icon-info'
  }
]

我们可以在菜单组件中添加以下代码实现角标:

<el-badge v-if="item.badge" :value="item.badge">
  <i :class="item.icon"></i>
  <span slot="badge">{{ item.badge }}</span>
  <span slot="title">{{ item.name }}</span>
</el-badge>
<el-menu-item v-else :index="item.path">
  <i :class="item.icon"></i>
  <span slot="title">{{ item.name }}</span>
</el-menu-item>

这样,在 Service 菜单项上就有了一个带有数字角标的图标。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vue实现导航栏菜单 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • vue实现简单转盘抽奖功能

    下面我来详细讲解如何用vue实现简单转盘抽奖功能的完整攻略: 1. 搭建项目 首先我们需要使用vue-cli来搭建一个vue项目,输入以下命令来创建一个新的vue项目: vue create lottery 安装依赖,进入项目目录并启动本地服务器: cd lottery npm install npm run serve 2. 编写转盘组件 接下来我们需要编…

    Vue 2023年5月27日
    00
  • vue+element表格导出为Excel文件

    接下来我将详细讲解如何使用Vue和Element UI来实现表格导出为Excel文件,具体步骤如下: 1. 安装必要的依赖 第一步是安装必要的依赖,包括 xlsx 库和 file-saver 库。可以使用npm或者yarn来安装依赖,命令如下: npm install xlsx file-saver –save yarn add xlsx file-sav…

    Vue 2023年5月27日
    00
  • vue获取验证码倒计时组件

    下面就让我来详细讲解一下 “Vue获取验证码倒计时组件” 的完整攻略。 一、需求分析 在现代应用程序中,验证码是非常重要的。 许多应用程序需要验证码以增加安全性。因此需要一个验证码组件,这个组件的功能应该是根据用户点击发送验证码按钮时,开始倒计时,在倒计时结束之前,用户不能再次发送验证码,同时按钮的文本要实时更新显示倒计时。 二、技术选型 在Vue.js中可…

    Vue 2023年5月29日
    00
  • Vue自定义加水波纹效果指令实例代码

    我将为您详细讲解“Vue自定义加水波纹效果指令实例代码”的完整攻略。 第一步:编写指令代码 首先,我们需要创建一个自定义指令,来实现水波纹效果。在Vue中,通过Vue.directive()方法来实现自定义指令的创建。下面是指令的基本代码: Vue.directive(‘ripple’, { bind(el) { el.addEventListener(‘c…

    Vue 2023年5月29日
    00
  • vue-router 4使用实例详解

    下面是“vue-router 4使用实例详解”的完整攻略。 一、前置知识: Vue.js框架的基础使用,Vue组件、生命周期等基础知识。 Vue-Router的基础使用方法,可以参考Vue-Router官网。 对ES6的基础了解。 二、vue-router 4使用实例 1. 安装 vue-router 使用npm安装Vue Router: npm insta…

    Vue 2023年5月28日
    00
  • 从0到1搭建Element的后台框架的方法步骤

    以下是从0到1搭建Element的后台框架的方法步骤: 步骤1:创建Vue项目 首先,在命令行输入以下命令创建一个Vue项目。你可以选择使用任何喜欢的包管理工具,如npm或yarn。 vue create my-project 步骤2:安装Element 接下来,我们需要安装Element。在命令行中运行以下命令: npm install element-u…

    Vue 2023年5月28日
    00
  • Vue路由对象属性 .meta $route.matched详解

    Vue路由对象属性 .meta $route.matched详解 简介 在Vue.js框架中,Vue Router是一个用于构建单页应用程序(SPA)的官方路由器库。Vue Router提供路由器对象,我们可以使用这个对象访问当前路由器的状态和信息,其中就包括路由对象属性.meta $route.matched。 $route.matched解析 一个路由匹…

    Vue 2023年5月28日
    00
  • Vue2.x与Vue3.x中路由钩子的区别详解

    来详细讲解“Vue2.x与Vue3.x中路由钩子的区别详解”。 Vue2.x与Vue3.x中路由钩子的区别详解 路由钩子的概念 在Vue中,路由是一个非常重要的概念,它用来管理应用程序中的导航。路由钩子则是在路由发生改变的时候,触发的一些函数,用于控制路由跳转的行为以及实现一些特殊的业务逻辑。 Vue2.x中路由钩子 在Vue2.x中,路由钩子分为三种类型:…

    Vue 2023年5月28日
    00
合作推广
合作推广
分享本页
返回顶部