当前位置:首页 > 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 和递归组件。

<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 等库提供了现成的菜单组件。

<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 样式可以提升菜单的视觉效果。

vue实现菜单列表

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

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

相关文章

css二级菜单制作

css二级菜单制作

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

纯css制作tab菜单

纯css制作tab菜单

纯CSS制作Tab菜单的方法 使用radio input控制切换 通过<input type="radio">和<label>元素配合实现无JavaScript的Tab切换效果…

如何制作css导航菜单

如何制作css导航菜单

创建基本HTML结构 导航菜单的基础是HTML结构。使用<nav>标签包裹无序列表<ul>,每个菜单项用<li>标签表示,链接用<a>标签。 <…

vue实现列表水印

vue实现列表水印

实现列表水印的方法 在Vue中为列表添加水印可以通过多种方式实现,以下是几种常见的方法: 使用CSS背景图 通过CSS的background-image属性为列表元素添加水印背景。水印可以是文字或图…

vue实现列表添加

vue实现列表添加

使用 Vue 实现列表添加功能 数据绑定与列表渲染 在 Vue 中,通过 v-for 指令可以轻松实现列表渲染。首先需要定义一个数组来存储列表数据,并在模板中使用 v-for 循环渲染。 <t…

vue列表展开实现

vue列表展开实现

Vue 列表展开实现方法 使用 v-for 和 v-show 控制展开状态 通过 v-for 渲染列表项,配合 v-show 控制子内容的显示隐藏。需要为每个列表项维护一个展开状态。 <tem…