当前位置:首页 > VUE

vue实现左侧菜单

2026-03-08 15:19:00VUE

Vue 实现左侧菜单的方法

使用 Element UI 的 el-menu 组件

安装 Element UI 后,可以直接使用其提供的 el-menu 组件快速构建左侧菜单。以下是一个基本示例:

vue实现左侧菜单

<template>
  <el-menu
    default-active="1"
    class="el-menu-vertical"
    background-color="#545c64"
    text-color="#fff"
    active-text-color="#ffd04b"
  >
    <el-submenu index="1">
      <template #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-item index="2">
      <i class="el-icon-menu"></i>
      <span>导航二</span>
    </el-menu-item>
  </el-menu>
</template>

<style>
.el-menu-vertical {
  height: 100vh;
}
</style>

自定义 Vue 组件实现

如果需要完全自定义的左侧菜单,可以创建一个 Vue 组件:

vue实现左侧菜单

<template>
  <div class="sidebar">
    <div v-for="item in menuItems" :key="item.id" class="menu-item">
      <div class="menu-title" @click="toggleSubMenu(item)">
        {{ item.title }}
        <span class="arrow" :class="{ 'arrow-down': item.isOpen }"></span>
      </div>
      <div v-show="item.isOpen" class="submenu">
        <div v-for="subItem in item.children" :key="subItem.id" class="submenu-item">
          {{ subItem.title }}
        </div>
      </div>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      menuItems: [
        {
          id: 1,
          title: '导航一',
          isOpen: false,
          children: [
            { id: 1-1, title: '选项1' },
            { id: 1-2, title: '选项2' }
          ]
        },
        {
          id: 2,
          title: '导航二',
          isOpen: false,
          children: []
        }
      ]
    }
  },
  methods: {
    toggleSubMenu(item) {
      item.isOpen = !item.isOpen
    }
  }
}
</script>

<style>
.sidebar {
  width: 200px;
  background-color: #545c64;
  color: white;
  height: 100vh;
}
.menu-item {
  padding: 10px;
}
.menu-title {
  cursor: pointer;
  display: flex;
  justify-content: space-between;
}
.submenu {
  padding-left: 20px;
}
.submenu-item {
  padding: 5px 0;
  cursor: pointer;
}
.arrow {
  display: inline-block;
  width: 0;
  height: 0;
  border-left: 5px solid transparent;
  border-right: 5px solid transparent;
  border-top: 5px solid white;
  transition: transform 0.3s;
}
.arrow-down {
  transform: rotate(180deg);
}
</style>

结合 Vue Router 实现导航

左侧菜单通常需要与路由配合使用:

<template>
  <el-menu
    :default-active="$route.path"
    class="el-menu-vertical"
    router
  >
    <el-menu-item index="/home">
      <i class="el-icon-menu"></i>
      <span>首页</span>
    </el-menu-item>
    <el-menu-item index="/about">
      <i class="el-icon-document"></i>
      <span>关于</span>
    </el-menu-item>
  </el-menu>
</template>

响应式设计考虑

为了使左侧菜单在不同屏幕尺寸下表现良好,可以添加响应式设计:

@media (max-width: 768px) {
  .el-menu-vertical {
    width: 60px;
  }
  .el-menu-item span {
    display: none;
  }
}

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

相关文章

vue实现飘窗原理

vue实现飘窗原理

vue实现飘窗原理 飘窗效果通常指在页面上悬浮显示的弹窗或通知,跟随页面滚动或固定在某个位置。Vue实现这一效果主要依赖组件化开发、CSS定位和动态数据绑定。 组件结构设计 创建一个独立的Vue组件…

vue实现triger

vue实现triger

在Vue中实现触发器(trigger)功能通常涉及自定义事件或DOM事件触发。以下是几种常见场景的实现方法: 自定义事件触发 通过$emit方法触发父组件中监听的自定义事件: // 子组件 thi…

vue实现tap

vue实现tap

Vue 实现 Tap 事件 在移动端开发中,Tap 事件比 Click 事件更常用,因为 Click 事件有 300ms 延迟。以下是几种在 Vue 中实现 Tap 事件的方法。 使用第三方库 安装…

vue实现画廊

vue实现画廊

Vue实现画廊的基本方法 使用Vue.js实现画廊功能可以通过多种方式完成,以下是一种常见的实现方案: 安装必要依赖 npm install vue-gallery --save 引入组件并注册…

vue 实现赋值

vue 实现赋值

Vue 实现赋值的方法 在 Vue 中,赋值操作通常涉及数据绑定和响应式更新。以下是几种常见的赋值方式: 直接赋值给 data 属性 在 Vue 实例的 data 对象中定义的属性可以直接通过 th…

vue toast实现

vue toast实现

Vue Toast 实现方法 使用第三方库(推荐) 安装 vue-toastification 库,这是一个功能丰富且轻量级的 Vue Toast 插件。 npm install vue-toast…