当前位置:首页 > VUE

vue实现左侧菜单

2026-01-16 02:00:04VUE

实现左侧菜单的基本结构

在Vue中实现左侧菜单通常需要结合组件化思想和路由功能。使用<el-menu>组件(Element UI)或自定义组件搭配Vue Router是常见方案。

<template>
  <div class="menu-container">
    <el-menu
      default-active="1"
      class="el-menu-vertical"
      background-color="#545c64"
      text-color="#fff"
      active-text-color="#ffd04b">
      <el-submenu index="1">
        <template slot="title">
          <i class="el-icon-location"></i>
          <span>导航一</span>
        </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>
  </div>
</template>

动态生成菜单数据

通过v-for循环渲染菜单项,数据通常来自后端API或本地配置。建议将菜单数据存储在Vuex或组件data中。

data() {
  return {
    menuItems: [
      {
        title: '首页',
        icon: 'el-icon-menu',
        path: '/home'
      },
      {
        title: '用户管理',
        icon: 'el-icon-user',
        children: [
          { title: '用户列表', path: '/users' }
        ]
      }
    ]
  }
}

集成路由功能

结合Vue Router实现菜单跳转,使用router-link或编程式导航。Element UI的<el-menu>可通过router属性自动处理路由。

<el-menu 
  :router="true"
  :default-active="$route.path">
  <el-menu-item 
    v-for="item in flatMenu"
    :index="item.path"
    :key="item.path"
    @click="handleMenuClick(item)">
    {{ item.title }}
  </el-menu-item>
</el-menu>

处理菜单状态

需要跟踪当前激活的菜单项,可通过监听路由变化或手动设置。使用Vue的computed属性动态计算激活状态更高效。

computed: {
  activeMenu() {
    return this.$route.matched[0].path || '/'
  }
}

响应式布局处理

添加CSS媒体查询和Vue的响应式数据控制菜单折叠状态。结合<el-menu>collapse属性可实现折叠效果。

@media screen and (max-width: 768px) {
  .el-menu-vertical:not(.el-menu--collapse) {
    width: 200px;
  }
}

权限控制实现

根据用户角色过滤菜单项,可在路由守卫或菜单渲染前处理。推荐使用Vue的v-if或自定义指令控制显示。

methods: {
  filterMenu(menu) {
    return menu.filter(item => {
      return this.$hasPermission(item.meta?.permission)
    })
  }
}

持久化菜单状态

使用localStorage或Vuex持久化存储菜单的展开/折叠状态,确保页面刷新后保持一致性。

created() {
  this.isCollapse = localStorage.getItem('menuCollapse') === 'true'
},
watch: {
  isCollapse(val) {
    localStorage.setItem('menuCollapse', val)
  }
}

vue实现左侧菜单

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

相关文章

vue实现多级弹窗

vue实现多级弹窗

Vue 多级弹窗实现方法 方法一:使用动态组件与递归组件 在 Vue 中可以通过动态组件配合递归组件实现多级弹窗。定义一个基础弹窗组件,通过递归调用自身实现层级嵌套。 基础弹窗组件模板示例:…

vue实现皮肤切换

vue实现皮肤切换

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

vue怎么实现数据检测

vue怎么实现数据检测

Vue 数据检测的实现方式 Vue 通过响应式系统实现数据检测,核心机制基于 Object.defineProperty(Vue 2)或 Proxy(Vue 3)。以下是具体实现方法: 基于 Vu…

vue设计与实现目录

vue设计与实现目录

以下是《Vue设计与实现》一书的典型目录结构(根据常见技术书籍及Vue核心内容整理): 响应式系统 响应式数据的基本原理 依赖收集与触发更新 实现简易响应式系统 Proxy与Reflec…

vue手写签名如何实现

vue手写签名如何实现

实现手写签名的基本思路 在Vue中实现手写签名功能,通常需要借助HTML5的Canvas API来捕获用户的绘制操作。核心流程包括初始化画布、监听触摸/鼠标事件、记录轨迹以及生成签名图片。 安装依…

vue设计与实现下载

vue设计与实现下载

vue设计与实现电子书下载 《Vue.js设计与实现》是一本深入解析Vue.js框架原理的书籍,由霍春阳(HcySunYang)撰写。以下是获取该资源的常见途径: 正版购买渠道 京东、当当、天…