当前位置:首页 > 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>

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

相关文章

如何制作css导航菜单

如何制作css导航菜单

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

vue侧边栏的实现

vue侧边栏的实现

侧边栏基础实现 在Vue中实现侧边栏通常需要结合组件化思想和CSS布局。以下是一个基础实现方式: 创建Sidebar.vue组件: <template> <div class…

vue实现折叠菜单

vue实现折叠菜单

实现折叠菜单的基本思路 在Vue中实现折叠菜单通常涉及使用组件化开发,结合状态管理控制菜单的展开与折叠。核心是通过v-show或v-if动态切换子菜单的显示状态,并通过事件触发(如点击)改变状态。…

js实现导航菜单

js实现导航菜单

使用HTML和CSS创建基础结构 导航菜单的基础结构通常由HTML的无序列表(<ul>)和列表项(<li>)组成,每个列表项包含一个链接(<a>)。CSS用于样式化…

vue实现级联菜单

vue实现级联菜单

实现级联菜单的基本思路 Vue中实现级联菜单通常需要以下关键点:数据结构的组织、组件间的通信、动态渲染子菜单。一般采用递归组件或逐层渲染的方式实现。 数据结构设计 级联菜单的数据通常为嵌套结构,例如…

vue实现横排菜单

vue实现横排菜单

实现横排菜单的方法 在Vue中实现横排菜单可以通过多种方式完成,以下是几种常见的实现方法。 使用Flex布局实现横排菜单 通过CSS Flex布局可以轻松实现横排菜单,代码简洁且兼容性好。 <…