当前位置:首页 > VUE

vue elementui实现菜单

2026-01-08 13:07:48VUE

Vue ElementUI 实现菜单

安装 ElementUI

确保项目已安装 Vue 和 ElementUI。若未安装,可以通过以下命令安装:

npm install element-ui

main.js 中引入 ElementUI:

import Vue from 'vue';
import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';

Vue.use(ElementUI);

基本菜单结构

使用 el-menu 组件创建菜单。以下是一个简单的水平菜单示例:

<template>
  <el-menu mode="horizontal" default-active="1">
    <el-menu-item index="1">首页</el-menu-item>
    <el-menu-item index="2">产品</el-menu-item>
    <el-menu-item index="3">关于我们</el-menu-item>
  </el-menu>
</template>

嵌套子菜单

使用 el-submenu 实现嵌套菜单:

<template>
  <el-menu default-active="1" class="el-menu-vertical">
    <el-submenu index="1">
      <template slot="title">产品</template>
      <el-menu-item index="1-1">产品1</el-menu-item>
      <el-menu-item index="1-2">产品2</el-menu-item>
    </el-submenu>
    <el-menu-item index="2">关于我们</el-menu-item>
  </el-menu>
</template>

动态生成菜单

通过 v-for 动态生成菜单项:

<template>
  <el-menu default-active="1">
    <el-menu-item 
      v-for="item in menuItems" 
      :key="item.index" 
      :index="item.index"
    >
      {{ item.title }}
    </el-menu-item>
  </el-menu>
</template>

<script>
export default {
  data() {
    return {
      menuItems: [
        { index: '1', title: '首页' },
        { index: '2', title: '产品' },
        { index: '3', title: '关于我们' }
      ]
    };
  }
};
</script>

路由跳转

结合 Vue Router 实现菜单路由跳转:

<template>
  <el-menu 
    router 
    default-active="/" 
    mode="horizontal"
  >
    <el-menu-item index="/">首页</el-menu-item>
    <el-menu-item index="/products">产品</el-menu-item>
  </el-menu>
</template>

自定义菜单样式

通过 CSS 覆盖默认样式或使用 class 自定义菜单外观:

<template>
  <el-menu class="custom-menu">
    <!-- 菜单项 -->
  </el-menu>
</template>

<style>
.custom-menu {
  background-color: #f5f5f5;
}
.custom-menu .el-menu-item {
  color: #333;
}
</style>

菜单事件处理

监听菜单事件,如 select

<template>
  <el-menu @select="handleMenuSelect">
    <!-- 菜单项 -->
  </el-menu>
</template>

<script>
export default {
  methods: {
    handleMenuSelect(index) {
      console.log('选中菜单:', index);
    }
  }
};
</script>

响应式菜单

结合媒体查询或 JavaScript 实现响应式菜单折叠:

<template>
  <el-menu :collapse="isCollapse">
    <!-- 菜单项 -->
  </el-menu>
</template>

<script>
export default {
  data() {
    return {
      isCollapse: false
    };
  },
  mounted() {
    window.addEventListener('resize', this.handleResize);
  },
  methods: {
    handleResize() {
      this.isCollapse = window.innerWidth < 768;
    }
  }
};
</script>

vue elementui实现菜单

标签: 菜单vue
分享给朋友:

相关文章

vue响应式实现

vue响应式实现

Vue 响应式实现原理 Vue 的响应式系统基于 Object.defineProperty(Vue 2.x)或 Proxy(Vue 3.x)实现,通过数据劫持和依赖收集实现数据变化时的自动更新。…

vue实现静态查询

vue实现静态查询

Vue 实现静态查询 在 Vue 中实现静态查询通常指不依赖后端接口,直接在前端处理数据筛选或搜索功能。以下是几种常见实现方式: 使用计算属性过滤数据 通过计算属性对静态数据进行筛选,适合简单查询…

vue实现皮肤切换

vue实现皮肤切换

实现皮肤切换的基本思路 在Vue中实现皮肤切换功能,通常涉及动态修改CSS变量或类名。核心是通过状态管理当前主题,并在组件中应用对应的样式。 使用CSS变量实现主题切换 CSS变量(自定义属性)是实…

vue怎么实现动画

vue怎么实现动画

Vue 动画实现方法 Vue 提供了多种方式实现动画效果,包括内置过渡系统、第三方库集成以及 CSS 动画。以下是常见实现方法: 使用 Vue 过渡系统 通过 <transition>…

vue实现打字机

vue实现打字机

Vue实现打字机效果 在Vue中实现打字机效果可以通过动态更新文本内容并添加延迟来实现。以下是几种常见的实现方法: 使用setInterval实现 <template> <d…

vue弹幕实现不重叠

vue弹幕实现不重叠

实现 Vue 弹幕不重叠的方法 CSS 定位与动画控制 通过绝对定位和动态计算弹幕轨道高度,确保弹幕在不同轨道上运行。每条弹幕占据固定高度的轨道,避免重叠。 // 弹幕轨道高度计算 const t…