当前位置:首页 > 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)管理状态。

vue实现侧边栏菜单

<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判断。

vue实现侧边栏菜单

<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控制子菜单的显示隐藏。

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

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

相关文章

如何制作css导航菜单

如何制作css导航菜单

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

css制作菜单

css制作菜单

CSS 制作菜单的方法 使用 CSS 可以制作多种风格的菜单,包括水平菜单、垂直菜单、下拉菜单等。以下是几种常见的实现方式。 水平菜单 水平菜单通常用于导航栏,可以通过 display: inlin…

jquery 菜单

jquery 菜单

jQuery 菜单实现方法 使用 jQuery 创建动态菜单可以通过多种方式实现,以下是几种常见的方法: 基于 HTML 和 CSS 的基础结构 创建菜单的 HTML 结构通常使用无序列表 &…

vue实现菜单定位

vue实现菜单定位

Vue实现菜单定位的方法 使用scrollIntoView方法 通过监听菜单点击事件,获取目标元素的DOM节点,调用scrollIntoView方法实现平滑滚动定位。需配合ref获取DOM节点。 m…

vue实现左右菜单联动实现

vue实现左右菜单联动实现

Vue 实现左右菜单联动 数据绑定与状态管理 在 Vue 中实现左右菜单联动,核心是通过共享状态或事件通信实现数据同步。可以通过 Vuex 或组件间的 props/emit 机制管理联动状态。 /…

vue实现左右菜单

vue实现左右菜单

实现左右菜单的基本思路 使用Vue实现左右菜单通常需要两个主要组件:左侧的导航菜单和右侧的内容区域。左侧菜单负责导航功能,右侧区域根据菜单选择动态展示对应内容。 创建基本组件结构 在Vue项目中创…