当前位置:首页 > VUE

vue实现菜单列表

2026-01-20 15:37:56VUE

Vue 实现菜单列表的方法

使用 v-for 动态渲染菜单项

通过 Vue 的 v-for 指令可以动态渲染菜单项,数据通常存储在组件的 data 属性中。

<template>
  <ul>
    <li v-for="item in menuItems" :key="item.id">
      {{ item.name }}
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      menuItems: [
        { id: 1, name: '首页' },
        { id: 2, name: '产品' },
        { id: 3, name: '关于我们' }
      ]
    }
  }
}
</script>

嵌套菜单的实现

对于多级菜单,可以使用嵌套的 v-for 和递归组件。

vue实现菜单列表

<template>
  <ul>
    <li v-for="item in menuItems" :key="item.id">
      {{ item.name }}
      <ul v-if="item.children">
        <li v-for="child in item.children" :key="child.id">
          {{ child.name }}
        </li>
      </ul>
    </li>
  </ul>
</template>

<script>
export default {
  data() {
    return {
      menuItems: [
        {
          id: 1,
          name: '首页',
          children: [
            { id: 11, name: '子菜单1' },
            { id: 12, name: '子菜单2' }
          ]
        },
        { id: 2, name: '产品' }
      ]
    }
  }
}
</script>

使用 Vue Router 实现路由菜单

结合 Vue Router 可以创建带有路由功能的菜单。

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

<script>
export default {
  data() {
    return {
      menuItems: [
        { path: '/', name: '首页' },
        { path: '/products', name: '产品' },
        { path: '/about', name: '关于我们' }
      ]
    }
  }
}
</script>

使用第三方 UI 库

Element UI 或 Ant Design Vue 等库提供了现成的菜单组件。

vue实现菜单列表

<template>
  <el-menu mode="horizontal">
    <el-menu-item index="1">首页</el-menu-item>
    <el-submenu index="2">
      <template #title>产品</template>
      <el-menu-item index="2-1">产品1</el-menu-item>
      <el-menu-item index="2-2">产品2</el-menu-item>
    </el-submenu>
    <el-menu-item index="3">关于我们</el-menu-item>
  </el-menu>
</template>

<script>
import { ElMenu, ElMenuItem, ElSubmenu } from 'element-plus'

export default {
  components: {
    ElMenu,
    ElMenuItem,
    ElSubmenu
  }
}
</script>

响应式菜单实现

通过 Vue 的响应式特性,可以动态更新菜单项。

<template>
  <ul>
    <li v-for="item in menuItems" :key="item.id">
      {{ item.name }}
    </li>
  </ul>
  <button @click="addMenuItem">添加菜单项</button>
</template>

<script>
export default {
  data() {
    return {
      menuItems: [
        { id: 1, name: '首页' },
        { id: 2, name: '产品' }
      ],
      nextId: 3
    }
  },
  methods: {
    addMenuItem() {
      this.menuItems.push({
        id: this.nextId++,
        name: '新菜单项'
      })
    }
  }
}
</script>

菜单样式优化

添加 CSS 样式可以提升菜单的视觉效果。

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

<style scoped>
.menu {
  list-style: none;
  padding: 0;
}
.menu-item {
  padding: 8px 16px;
  cursor: pointer;
}
.menu-item:hover {
  background-color: #f0f0f0;
}
</style>

标签: 菜单列表
分享给朋友:

相关文章

vue列表查询实现

vue列表查询实现

实现 Vue 列表查询功能 基础列表渲染 在 Vue 中可以通过 v-for 指令实现列表渲染,结合计算属性动态过滤数据: <template> <div> &l…

css菜单制作

css菜单制作

基础水平菜单制作 使用无序列表<ul>和<li>标签构建结构,CSS设置横向排列: <ul class="horizontal-menu"> <li&g…

vue实现列表权限

vue实现列表权限

实现列表权限的基本思路 在Vue中实现列表权限通常涉及根据用户角色或权限动态渲染列表内容。核心逻辑是通过权限判断控制列表项的显示、隐藏或操作权限。 权限数据管理 使用Vuex或Pinia存储全局权限…

css二级菜单制作

css二级菜单制作

使用纯CSS实现二级菜单 通过嵌套HTML结构和CSS选择器实现二级菜单的显示与隐藏效果。以下是一个基础实现方案: HTML结构: <ul class="menu"> <…

css制作二级菜单

css制作二级菜单

使用纯CSS制作二级菜单 通过CSS的:hover伪类和子选择器实现二级菜单的显示与隐藏。以下是一个典型的结构和样式示例: HTML结构 <nav class="menu"> &l…

css制作tab菜单

css制作tab菜单

CSS制作Tab菜单的方法 HTML结构 使用无序列表和div容器构建基础结构,列表项为标签页标题,div内放置对应内容块。 <ul class="tab-menu"> <l…