当前位置:首页 > VUE

vue实现左侧菜单

2026-03-08 15:19:00VUE

Vue 实现左侧菜单的方法

使用 Element UI 的 el-menu 组件

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

<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 组件:

<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>

响应式设计考虑

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

vue实现左侧菜单

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

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

相关文章

vue实现长按

vue实现长按

Vue 实现长按功能的方法 在 Vue 中实现长按功能可以通过原生事件监听或自定义指令完成。以下是几种常见实现方式: 使用原生事件监听 通过 @mousedown 和 @mouseup 或 @tou…

vue实现布局

vue实现布局

Vue 实现布局方法 Vue 提供了多种方式实现页面布局,可以通过组件化、CSS 框架或自定义样式完成。以下是几种常见方法: 使用 CSS Flexbox 或 Grid 通过 Vue 单文件组件结合…

vue登录实现

vue登录实现

Vue 登录实现 实现登录功能通常需要前端与后端配合,Vue 作为前端框架,主要负责表单处理、请求发送和状态管理。以下是常见的实现方式: 表单设计与数据绑定 使用 Vue 的 v-model 实现表…

vue实现答题

vue实现答题

Vue 实现答题功能 数据结构设计 使用 Vue 的响应式特性管理题目和答案数据。通常需要以下数据结构: data() { return { questions: [ {…

轮播vue实现

轮播vue实现

使用 Vue 实现轮播功能 基础轮播实现 安装依赖(如使用 Swiper): npm install swiper vue-awesome-swiper 组件代码示例: <template&…

vue watch实现

vue watch实现

在 Vue 中实现 watch 监听数据变化 Vue 的 watch 选项用于监听数据变化并执行相应的回调函数。以下是几种常见的实现方式: 基础用法 export default { data(…