<…">
当前位置:首页 > VUE

vue实现菜单导航

2026-03-10 03:21:12VUE

实现基础菜单结构

使用 Vue 的 v-for 动态渲染菜单项,数据通过数组定义。示例代码:

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

<script>
export default {
  data() {
    return {
      menuItems: [
        { id: 1, name: "首页", path: "/" },
        { id: 2, name: "产品", path: "/products" },
        { id: 3, name: "关于", path: "/about" }
      ]
    };
  }
};
</script>

嵌套子菜单支持

通过递归组件实现多级菜单。定义子组件 SubMenu.vue

vue实现菜单导航

<template>
  <div class="submenu">
    <div @click="toggleSubMenu">{{ parentItem.name }}</div>
    <ul v-show="isOpen">
      <li v-for="child in parentItem.children" :key="child.id">
        <router-link :to="child.path">{{ child.name }}</router-link>
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  props: ["parentItem"],
  data() {
    return { isOpen: false };
  },
  methods: {
    toggleSubMenu() {
      this.isOpen = !this.isOpen;
    }
  }
};
</script>

集成路由导航

结合 Vue Router 实现路由跳转。确保路由配置与菜单数据匹配:

// router/index.js
const routes = [
  { path: "/", component: Home },
  { path: "/products", component: Products },
  { path: "/about", component: About }
];

高亮当前选中菜单

通过 Vue Router 的 router-link-active 类或自定义逻辑实现:

vue实现菜单导航

.router-link-active {
  color: #42b983;
  font-weight: bold;
}

响应式折叠菜单

使用 CSS 媒体查询或 Vue 监听窗口宽度动态切换菜单样式:

data() {
  return {
    isCollapsed: window.innerWidth < 768
  };
},
mounted() {
  window.addEventListener("resize", () => {
    this.isCollapsed = window.innerWidth < 768;
  });
}

权限控制菜单项

根据用户角色过滤菜单数据:

computed: {
  filteredMenu() {
    return this.menuItems.filter(item => {
      return user.roles.includes(item.requiredRole);
    });
  }
}

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

相关文章

vue表格实现教学

vue表格实现教学

Vue 表格实现方法 使用原生HTML表格 在Vue模板中直接使用HTML的<table>标签,结合v-for动态渲染数据: <template> <table&g…

vue原型实现

vue原型实现

Vue 原型实现的关键点 Vue.js 的原型系统是其响应式机制的核心部分,通过原型链实现数据的动态绑定和依赖收集。以下是实现 Vue 原型的主要技术要点。 数据响应式原理 Vue 通过 Objec…

vue实现订单

vue实现订单

Vue 实现订单功能 订单数据结构设计 订单数据通常包含以下字段: order: { id: String, // 订单ID userId: String,…

vue 组件实现

vue 组件实现

Vue 组件实现方法 单文件组件 (SFC) 使用 .vue 文件格式,包含模板、脚本和样式三部分: <template> <div class="example">{{…

vue 实现注册

vue 实现注册

Vue 实现注册功能 注册功能通常包括表单验证、数据提交和用户反馈。以下是实现注册功能的步骤: 1. 创建注册表单组件 在 Vue 项目中创建一个注册表单组件,包含用户名、邮箱、密码等输入字段。…

vue实现portal

vue实现portal

Vue 实现 Portal 功能 Portal 是一种将子节点渲染到父组件 DOM 层级之外的 DOM 节点的技术,常用于实现模态框、弹出层等需要脱离当前组件层级的场景。Vue 可以通过多种方式实现…