当前位置:首页 > VUE

vue侧边栏的实现

2026-03-26 22:58:01VUE

Vue 侧边栏实现方法

基础布局与组件结构

使用 Vue 3 的 Composition API 结合 <router-link> 实现路由导航侧边栏。以下是一个典型的结构:

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

<script setup>
const menuItems = [
  { path: '/dashboard', title: 'Dashboard' },
  { path: '/users', title: 'Users' },
  { path: '/settings', title: 'Settings' }
]
</script>

<style scoped>
.sidebar {
  width: 250px;
  height: 100vh;
  background: #2c3e50;
  color: white;
}
.nav-items a {
  color: white;
  text-decoration: none;
  display: block;
  padding: 10px;
}
.router-link-active {
  background: #34495e;
}
</style>

动态折叠功能

通过 Vue 的响应式数据控制侧边栏展开/折叠状态:

<script setup>
import { ref } from 'vue'
const isCollapsed = ref(false)
const toggleSidebar = () => isCollapsed.value = !isCollapsed.value
</script>

<template>
  <div class="sidebar" :class="{ 'collapsed': isCollapsed }">
    <button @click="toggleSidebar">☰</button>
    <!-- 其他内容 -->
  </div>
</template>

<style>
.sidebar.collapsed {
  width: 60px;
}
.sidebar.collapsed .nav-text {
  display: none;
}
</style>

嵌套路由支持

结合 Vue Router 的嵌套路由配置:

// router.js
const routes = [
  {
    path: '/',
    component: Layout,
    children: [
      { path: '', component: Dashboard },
      { path: 'users', component: Users }
    ]
  }
]

权限控制实现

根据用户角色过滤菜单项:

<script setup>
import { computed } from 'vue'
import { useUserStore } from '@/stores/user'

const userStore = useUserStore()
const allMenuItems = [
  { path: '/admin', title: 'Admin', role: 'admin' },
  { path: '/reports', title: 'Reports', role: 'user' }
]

const menuItems = computed(() => 
  allMenuItems.filter(item => 
    !item.role || userStore.roles.includes(item.role)
  )
)
</script>

动画效果增强

使用 Vue 的过渡组件实现平滑动画:

<template>
  <transition name="slide">
    <div class="sidebar" v-if="isVisible">
      <!-- 内容 -->
    </div>
  </transition>
</template>

<style>
.slide-enter-active, .slide-leave-active {
  transition: transform 0.3s ease;
}
.slide-enter-from, .slide-leave-to {
  transform: translateX(-100%);
}
</style>

响应式适配

通过媒体查询实现移动端适配:

@media (max-width: 768px) {
  .sidebar {
    position: fixed;
    z-index: 100;
    transform: translateX(-100%);
  }
  .sidebar.open {
    transform: translateX(0);
  }
}

状态管理集成

与 Pinia 状态管理结合实现全局状态:

vue侧边栏的实现

// stores/sidebar.js
export const useSidebarStore = defineStore('sidebar', {
  state: () => ({ isOpen: true }),
  actions: {
    toggle() { this.isOpen = !this.isOpen }
  }
})

标签: 侧边vue
分享给朋友:

相关文章

vue聊天实现

vue聊天实现

Vue 聊天应用实现步骤 创建 Vue 项目 使用 Vue CLI 或 Vite 初始化项目,安装必要依赖(如 Vue 3、Element UI 或 Vuetify 用于 UI 组件)。 npm c…

vue实现购票

vue实现购票

Vue 实现购票功能 数据结构设计 购票功能通常需要以下数据结构: 场次信息(时间、地点、价格) 座位信息(可选座位、已售座位) 用户订单信息 示例数据结构: data() { return…

实现vue cli

实现vue cli

安装 Vue CLI 确保系统中已安装 Node.js(版本建议 12.x 或更高)。通过 npm 全局安装 Vue CLI: npm install -g @vue/cli 安装完成后验证版本:…

vue实现心电图

vue实现心电图

Vue 实现心电图效果 在 Vue 中实现心电图效果通常需要结合 Canvas 或 SVG 进行动态绘图,模拟心电图数据的实时变化。以下是两种实现方式的核心思路和代码示例: 使用 Canvas 绘制…

vue实现刷卡

vue实现刷卡

Vue 实现刷卡效果 在 Vue 中实现刷卡效果可以通过 CSS 动画和 Vue 的过渡系统结合完成。以下是一种常见的实现方式: 基础实现方法 安装 Vue 过渡依赖(如果尚未安装): npm i…

vue实现模糊

vue实现模糊

Vue实现模糊搜索的方法 在Vue中实现模糊搜索功能通常需要结合输入框和列表渲染,通过监听输入内容动态过滤数据。以下是几种常见实现方式: 使用计算属性实现 计算属性适合处理需要响应式更新的搜索逻辑:…