当前位置:首页 > VUE

vue实现侧边菜单

2026-01-18 10:09:17VUE

使用Vue实现侧边菜单

在Vue中实现侧边菜单可以通过多种方式完成,以下是几种常见的方法:

基于Element UI的侧边菜单

Element UI提供了现成的侧边栏组件,可以直接使用:

<template>
  <el-container>
    <el-aside width="200px">
      <el-menu
        default-active="1"
        class="el-menu-vertical-demo"
        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-item index="2">
          <i class="el-icon-menu"></i>
          <span>导航二</span>
        </el-menu-item>
      </el-menu>
    </el-aside>
    <el-main>主内容区域</el-main>
  </el-container>
</template>

<script>
export default {
  name: 'SideMenu'
}
</script>

自定义侧边菜单组件

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

<template>
  <div class="sidebar">
    <div class="menu-item" v-for="item in menuItems" :key="item.id">
      <router-link :to="item.path">{{ item.title }}</router-link>
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      menuItems: [
        { id: 1, title: '首页', path: '/' },
        { id: 2, title: '关于', path: '/about' },
        { id: 3, title: '服务', path: '/services' }
      ]
    }
  }
}
</script>

<style scoped>
.sidebar {
  width: 200px;
  background-color: #f5f5f5;
  height: 100vh;
}
.menu-item {
  padding: 12px 20px;
  border-bottom: 1px solid #ddd;
}
</style>

使用Vue Router实现动态侧边菜单

结合Vue Router可以实现更灵活的侧边菜单:

<template>
  <div class="sidebar">
    <div v-for="route in filteredRoutes" :key="route.path">
      <router-link :to="route.path">{{ route.meta.title }}</router-link>
    </div>
  </div>
</template>

<script>
export default {
  computed: {
    filteredRoutes() {
      return this.$router.options.routes.filter(
        route => route.meta && route.meta.showInMenu
      )
    }
  }
}
</script>

在router配置中需要添加meta信息:

const routes = [
  {
    path: '/',
    name: 'Home',
    component: Home,
    meta: { title: '首页', showInMenu: true }
  },
  {
    path: '/about',
    name: 'About',
    component: About,
    meta: { title: '关于', showInMenu: true }
  }
]

响应式侧边菜单

添加响应式功能,使菜单在小屏幕上可以折叠:

vue实现侧边菜单

<template>
  <div>
    <button @click="toggleMenu">切换菜单</button>
    <div class="sidebar" :class="{ 'collapsed': isCollapsed }">
      <!-- 菜单内容 -->
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isCollapsed: false
    }
  },
  methods: {
    toggleMenu() {
      this.isCollapsed = !this.isCollapsed
    }
  }
}
</script>

<style>
.sidebar {
  width: 200px;
  transition: width 0.3s;
}
.sidebar.collapsed {
  width: 50px;
}
</style>

以上方法可以根据项目需求选择使用,Element UI适合快速开发,自定义组件提供更大灵活性,结合Vue Router可以实现动态菜单,响应式设计则能适应不同屏幕尺寸。

标签: 侧边菜单
分享给朋友:

相关文章

用css制作下拉菜单

用css制作下拉菜单

使用纯CSS制作下拉菜单 HTML结构 基础的下拉菜单需要嵌套的HTML结构,通常使用<ul>和<li>标签实现层级关系: <div class="dropdown"&…

vue实现下拉菜单

vue实现下拉菜单

实现下拉菜单的基本结构 使用 Vue 的 v-show 或 v-if 控制下拉菜单的显示与隐藏。通过点击按钮或父元素触发下拉状态切换。 <template> <div cl…

vue菜单tab实现

vue菜单tab实现

Vue 菜单 Tab 实现方法 使用动态组件切换内容 通过 Vue 的 component 动态组件结合 v-for 渲染菜单项,点击时切换显示内容: <template> <…

css制作横向菜单

css制作横向菜单

使用 Flexbox 制作横向菜单 Flexbox 是制作横向菜单的现代方法,代码简洁且兼容性好。以下是一个基本实现: <nav class="horizontal-menu"> &…

vue实现横排菜单

vue实现横排菜单

实现横排菜单的方法 在Vue中实现横排菜单可以通过多种方式完成,以下是几种常见的实现方法。 使用Flex布局实现横排菜单 通过CSS Flex布局可以轻松实现横排菜单,代码简洁且兼容性好。…

vue  简单菜单实现

vue 简单菜单实现

实现简单菜单的步骤 在 Vue 中实现一个简单的菜单,可以通过以下方法完成: 使用 v-for 动态渲染菜单项 在 Vue 的模板中,使用 v-for 遍历菜单数据,动态生成菜单项。 <…