当前位置:首页 > VUE

vue侧边栏实现

2026-01-19 09:00:16VUE

实现 Vue 侧边栏的基本方法

使用 Vue 结合 Vue Router 和组件化思想实现侧边栏。通过动态路由和状态管理控制侧边栏的显示与隐藏。

<template>
  <div class="sidebar-container" :class="{ 'collapsed': isCollapsed }">
    <div class="sidebar-menu">
      <router-link 
        v-for="item in menuItems" 
        :key="item.path" 
        :to="item.path"
        class="menu-item"
      >
        <i :class="item.icon"></i>
        <span v-show="!isCollapsed">{{ item.title }}</span>
      </router-link>
    </div>
    <button @click="toggleCollapse" class="collapse-btn">
      {{ isCollapsed ? '>' : '<' }}
    </button>
  </div>
</template>

侧边栏样式设计

通过 CSS 实现侧边栏的过渡动画和响应式布局,确保在不同屏幕尺寸下表现良好。

.sidebar-container {
  width: 250px;
  height: 100vh;
  background-color: #2c3e50;
  transition: width 0.3s ease;
  position: fixed;
  left: 0;
  top: 0;
}

.sidebar-container.collapsed {
  width: 64px;
}

.menu-item {
  display: flex;
  align-items: center;
  padding: 12px 20px;
  color: white;
  text-decoration: none;
}

.menu-item i {
  margin-right: 10px;
  font-size: 20px;
}

.collapse-btn {
  position: absolute;
  right: -20px;
  top: 20px;
  width: 20px;
  height: 20px;
  background: #2c3e50;
  border: none;
  color: white;
  cursor: pointer;
}

动态菜单数据管理

通过 Vuex 或 Pinia 管理侧边栏菜单状态,实现权限控制和动态加载。

import { defineComponent, ref } from 'vue';

export default defineComponent({
  setup() {
    const isCollapsed = ref(false);
    const menuItems = ref([
      { path: '/dashboard', title: 'Dashboard', icon: 'el-icon-menu' },
      { path: '/users', title: 'Users', icon: 'el-icon-user' },
      { path: '/settings', title: 'Settings', icon: 'el-icon-setting' }
    ]);

    const toggleCollapse = () => {
      isCollapsed.value = !isCollapsed.value;
    };

    return { isCollapsed, menuItems, toggleCollapse };
  }
});

响应式适配方案

结合媒体查询实现移动端适配,在较小屏幕上自动折叠侧边栏。

@media (max-width: 768px) {
  .sidebar-container {
    width: 64px;
  }

  .sidebar-container:not(.collapsed) {
    width: 250px;
    z-index: 1000;
  }
}

与 Vue Router 集成

通过路由守卫和动态路由实现侧边栏菜单与路由的同步。

const routes = [
  {
    path: '/',
    component: Layout,
    children: [
      { path: 'dashboard', component: Dashboard },
      { path: 'users', component: Users },
      { path: 'settings', component: Settings }
    ]
  }
];

第三方组件库方案

使用 Element UI 或 Ant Design Vue 等现成组件库快速实现侧边栏。

<template>
  <el-menu
    :default-active="activeIndex"
    class="el-menu-vertical"
    :collapse="isCollapse"
  >
    <el-menu-item index="1">
      <i class="el-icon-menu"></i>
      <span>Dashboard</span>
    </el-menu-item>
  </el-menu>
</template>

vue侧边栏实现

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

相关文章

vue为啥能实现监听

vue为啥能实现监听

Vue 实现监听的原理 Vue 的监听能力主要基于其响应式系统,该系统通过数据劫持和依赖收集实现。当数据变化时,系统能自动触发视图更新或执行回调函数。 核心机制:Object.definePrope…

vue实现分屏

vue实现分屏

Vue 实现分屏的方法 分屏功能通常用于展示多个独立内容区域,以下是几种常见的实现方式: 使用 CSS Grid 布局 通过 CSS Grid 可以轻松创建分屏布局,在 Vue 组件中直接应用样式…

vue组件实现

vue组件实现

Vue 组件实现基础 Vue 组件是 Vue.js 的核心特性之一,允许将 UI 拆分为独立、可复用的模块。组件的实现包括定义、注册、数据传递和生命周期管理等。 定义组件 组件可以通过单文件组件(.…

vue实现iframe

vue实现iframe

Vue 中实现 iframe 的方法 在 Vue 项目中,可以通过多种方式实现 iframe 的嵌入。以下是几种常见的方法: 使用原生 HTML iframe 标签 直接在 Vue 组件的模板中使…

jq 实现 vue

jq 实现 vue

jq 实现 Vue 的核心功能 jq 是一个轻量级的 JavaScript 库,主要用于 DOM 操作和事件处理。虽然它不能完全替代 Vue,但可以通过一些技巧模拟 Vue 的核心功能,如数据绑定、事…

vue 路由 实现

vue 路由 实现

Vue 路由实现方法 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是实现 Vue 路由的详细步骤: 安装 Vue Router 通过 npm 或 ya…