当前位置:首页 > VUE

vue实现侧边栏菜单

2026-01-20 23:18:21VUE

实现侧边栏菜单的基本结构

使用Vue的模板语法构建侧边栏的基础HTML结构,通常包含一个<div>容器和嵌套的<ul>列表。菜单项通过v-for动态渲染,数据驱动视图。

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

定义菜单数据

在Vue组件的datascript setup中定义菜单数据数组,包含标题、路径等字段。推荐使用响应式API(如refreactive)管理状态。

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

添加样式与交互效果

通过CSS为侧边栏添加宽度、背景色等基础样式,利用Vue的v-showv-if控制菜单展开/折叠状态。过渡动画可使用Vue的<transition>组件。

<style scoped>
.sidebar {
  width: 250px;
  background-color: #2c3e50;
  min-height: 100vh;
  transition: all 0.3s;
}
.sidebar.collapsed {
  width: 60px;
}
.sidebar ul li a {
  color: white;
  padding: 10px;
  display: block;
}
</style>

集成路由功能

若使用Vue Router,通过<router-link>实现导航。动态高亮当前路由可结合router-link-active类或route.matched判断。

<li v-for="item in menuItems" :key="item.id">
  <router-link 
    :to="item.path" 
    :class="{ 'active': $route.path === item.path }"
  >
    {{ item.title }}
  </router-link>
</li>

响应式折叠控制

添加折叠按钮,通过Vue的响应式数据(如isCollapsed)和事件绑定实现侧边栏的展开/折叠功能。

<button @click="isCollapsed = !isCollapsed">
  {{ isCollapsed ? '展开' : '折叠' }}
</button>
<div class="sidebar" :class="{ 'collapsed': isCollapsed }">
  <!-- 菜单内容 -->
</div>

嵌套子菜单支持

对于多级菜单,使用递归组件或嵌套v-for渲染子菜单。通过v-show控制子菜单的显示隐藏。

vue实现侧边栏菜单

<li v-for="item in menuItems" :key="item.id">
  <div @click="item.expanded = !item.expanded">
    {{ item.title }}
    <span v-if="item.children">{{ item.expanded ? '−' : '+' }}</span>
  </div>
  <ul v-show="item.expanded" v-if="item.children">
    <li v-for="child in item.children" :key="child.id">
      <router-link :to="child.path">{{ child.title }}</router-link>
    </li>
  </ul>
</li>

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

相关文章

vue 实现菜单

vue 实现菜单

Vue 实现菜单的方法 使用 Vue 实现菜单可以通过多种方式,以下是几种常见的方法: 使用 Vue Router 实现动态路由菜单 通过 Vue Router 可以动态生成菜单,根据路由配置自动渲…

css制作下拉菜单

css制作下拉菜单

使用纯CSS制作下拉菜单 通过HTML和CSS可以创建无需JavaScript的下拉菜单,主要利用:hover伪类和display属性控制显示隐藏。 HTML结构示例: <div class…

vue 底部菜单实现

vue 底部菜单实现

实现 Vue 底部菜单的方法 使用 v-if 或 v-show 控制显示 在 Vue 中可以通过条件渲染控制底部菜单的显示与隐藏。v-if 适合动态切换频率较低的场景,v-show 适合频繁切换的场景…

vue实现菜单联动

vue实现菜单联动

实现菜单联动的基本思路 在Vue中实现菜单联动通常涉及父子组件通信或状态管理。核心是通过数据绑定和事件监听,确保一个菜单的选择能触发另一个菜单的更新。 数据准备与结构设计 定义菜单数据时,建议使用嵌…

vue实现菜单切换

vue实现菜单切换

Vue 实现菜单切换的方法 在 Vue 中实现菜单切换通常涉及动态绑定类名、条件渲染或状态管理。以下是几种常见的方法: 动态绑定 class 实现高亮切换 通过 v-bind:class 动态绑定类…

vue实现悬浮菜单

vue实现悬浮菜单

实现悬浮菜单的基本思路 使用Vue实现悬浮菜单通常需要结合CSS定位和Vue的事件监听。核心是通过v-show或v-if控制菜单显隐,通过鼠标事件触发状态变化。 HTML结构示例 <t…