当前位置:首页 > VUE

vue实现侧部导航

2026-03-10 13:19:02VUE

Vue 实现侧部导航

使用 Element UI 的 el-menu 组件

安装 Element UI:

npm install element-ui

在 main.js 中引入 Element UI:

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

Vue.use(ElementUI);

在组件中使用 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 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>
</template>

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

使用 Vue Router 实现导航跳转

配置路由:

const routes = [
  {
    path: '/option1',
    name: 'Option1',
    component: () => import('./views/Option1.vue')
  },
  {
    path: '/option2',
    name: 'Option2',
    component: () => import('./views/Option2.vue')
  }
];

在 el-menu 中添加路由链接:

vue实现侧部导航

<el-menu-item index="1-1" @click="$router.push('/option1')">选项1</el-menu-item>
<el-menu-item index="1-2" @click="$router.push('/option2')">选项2</el-menu-item>

自定义侧边栏组件

创建 Sidebar.vue 组件:

<template>
  <div class="sidebar">
    <div v-for="item in menuItems" :key="item.path" class="menu-item" @click="navigateTo(item.path)">
      {{ item.title }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      menuItems: [
        { title: '首页', path: '/' },
        { title: '关于', path: '/about' }
      ]
    };
  },
  methods: {
    navigateTo(path) {
      this.$router.push(path);
    }
  }
};
</script>

<style>
.sidebar {
  width: 200px;
  background-color: #f0f0f0;
  height: 100vh;
}
.menu-item {
  padding: 12px 20px;
  cursor: pointer;
}
.menu-item:hover {
  background-color: #e0e0e0;
}
</style>

响应式侧边栏

添加折叠功能:

<template>
  <div>
    <button @click="isCollapsed = !isCollapsed">切换</button>
    <el-menu
      :collapse="isCollapsed"
      class="el-menu-vertical"
      background-color="#545c64"
      text-color="#fff"
      active-text-color="#ffd04b">
      <!-- 菜单项 -->
    </el-menu>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isCollapsed: false
    };
  }
};
</script>

动态生成菜单

从 API 获取菜单数据:

<script>
export default {
  data() {
    return {
      menuItems: []
    };
  },
  async created() {
    try {
      const response = await axios.get('/api/menu');
      this.menuItems = response.data;
    } catch (error) {
      console.error('获取菜单失败', error);
    }
  }
};
</script>

标签: vue
分享给朋友:

相关文章

vue实现modal

vue实现modal

Vue 实现 Modal 弹窗组件 使用 Vue 实现 Modal 弹窗组件可以通过多种方式,包括原生 Vue 组件、第三方库或自定义指令。以下是几种常见方法: 原生 Vue 组件实现 创建一个基础…

实现.vue文件

实现.vue文件

创建.vue文件的基本结构 一个标准的.vue文件包含三个部分:模板(template)、脚本(script)和样式(style)。这种结构允许开发者在一个文件中管理组件的HTML、JavaScrip…

vue 动画实现

vue 动画实现

Vue 动画实现方式 Vue 提供了多种方式实现动画效果,主要分为内置组件和第三方库集成。 使用 Vue 内置过渡组件 Vue 的 <transition> 和 <transiti…

vue 实现登录

vue 实现登录

Vue 实现登录功能 创建登录表单组件 在 Vue 项目中创建一个登录表单组件(如 Login.vue),包含用户名和密码输入框以及提交按钮。使用 v-model 实现双向数据绑定。 <tem…

vue遮罩实现

vue遮罩实现

实现 Vue 遮罩的常见方法 使用 CSS 定位和透明度 创建一个全屏遮罩层,通过 CSS 固定定位覆盖整个视口,并设置半透明背景色。 <template> <div cl…

vue实现反馈

vue实现反馈

Vue 实现反馈功能的方法 在 Vue 中实现反馈功能可以通过多种方式,包括弹窗提示、Toast 消息、表单提交等。以下是几种常见的实现方法。 弹窗反馈 使用 Vue 的组件化特性创建一个弹窗组件,…