当前位置:首页 > VUE

vue实现左边侧边栏

2026-02-23 21:27:34VUE

实现左侧边栏的基本结构

使用Vue.js结合Vue Router和CSS可以快速构建左侧边栏。侧边栏通常包含导航菜单,并与主内容区域并列显示。

<template>
  <div class="app-container">
    <div class="sidebar">
      <nav>
        <router-link to="/">首页</router-link>
        <router-link to="/about">关于</router-link>
        <!-- 更多导航项 -->
      </nav>
    </div>
    <div class="main-content">
      <router-view></router-view>
    </div>
  </div>
</template>

样式设计

通过CSS Flex布局或Grid布局实现侧边栏与主内容的并排排列,侧边栏固定宽度,主内容自适应剩余空间。

<style scoped>
.app-container {
  display: flex;
  height: 100vh;
}

.sidebar {
  width: 200px;
  background-color: #f0f0f0;
  padding: 20px;
}

.main-content {
  flex: 1;
  padding: 20px;
}

nav a {
  display: block;
  margin-bottom: 10px;
  color: #2c3e50;
  text-decoration: none;
}

nav a.router-link-exact-active {
  color: #42b983;
  font-weight: bold;
}
</style>

动态折叠侧边栏

添加一个按钮控制侧边栏的展开与折叠,通过Vue的响应式数据控制样式变化。

<template>
  <div class="app-container">
    <button @click="toggleSidebar">切换侧边栏</button>
    <div class="sidebar" :class="{ 'collapsed': isCollapsed }">
      <nav>
        <router-link to="/">首页</router-link>
        <router-link to="/about">关于</router-link>
      </nav>
    </div>
    <div class="main-content">
      <router-view></router-view>
    </div>
  </div>
</template>
<script>
export default {
  data() {
    return {
      isCollapsed: false
    }
  },
  methods: {
    toggleSidebar() {
      this.isCollapsed = !this.isCollapsed;
    }
  }
}
</script>
.sidebar.collapsed {
  width: 50px;
  overflow: hidden;
}

.sidebar.collapsed nav a {
  text-overflow: ellipsis;
  white-space: nowrap;
}

使用组件化拆分

将侧边栏拆分为独立组件,提高代码复用性和可维护性。

<!-- Sidebar.vue -->
<template>
  <div class="sidebar" :class="{ 'collapsed': collapsed }">
    <nav>
      <slot></slot>
    </nav>
  </div>
</template>

<script>
export default {
  props: {
    collapsed: Boolean
  }
}
</script>
<!-- App.vue -->
<template>
  <div class="app-container">
    <button @click="toggleSidebar">切换侧边栏</button>
    <Sidebar :collapsed="isCollapsed">
      <router-link to="/">首页</router-link>
      <router-link to="/about">关于</router-link>
    </Sidebar>
    <div class="main-content">
      <router-view></router-view>
    </div>
  </div>
</template>

响应式设计

通过媒体查询实现移动端适配,小屏幕下侧边栏自动隐藏或改为下拉菜单。

@media (max-width: 768px) {
  .sidebar {
    position: fixed;
    height: 100%;
    z-index: 100;
    transform: translateX(-100%);
    transition: transform 0.3s ease;
  }

  .sidebar.collapsed {
    transform: translateX(0);
    width: 200px;
  }
}

状态管理

对于复杂应用,可以使用Vuex或Pinia管理侧边栏的展开状态,便于跨组件访问。

vue实现左边侧边栏

// store.js
import { createStore } from 'vuex'

export default createStore({
  state: {
    sidebarCollapsed: false
  },
  mutations: {
    toggleSidebar(state) {
      state.sidebarCollapsed = !state.sidebarCollapsed
    }
  }
})
<!-- App.vue -->
<template>
  <button @click="$store.commit('toggleSidebar')">切换侧边栏</button>
  <Sidebar :collapsed="$store.state.sidebarCollapsed" />
</template>

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

相关文章

vue实现安全免登录

vue实现安全免登录

Vue 实现安全免登录的方案 免登录功能通常通过持久化认证状态(如 Token)实现,但需兼顾安全性。以下是基于 Vue 的常见实现方案: 基于 Token 的免登录 登录成功后存储 Token…

vue实现oauth

vue实现oauth

Vue 实现 OAuth 的步骤 安装必要的依赖 确保项目中安装了 axios 和 vue-router。OAuth 通常需要发送 HTTP 请求和处理路由跳转。 npm install axios…

vue实现布局

vue实现布局

Vue 实现布局方法 Vue 提供了多种方式实现页面布局,可以通过组件化、CSS 框架或自定义样式完成。以下是几种常见方法: 使用 CSS Flexbox 或 Grid 通过 Vue 单文件组件结合…

vue怎么实现 tab

vue怎么实现 tab

Vue 实现 Tab 的方法 使用动态组件和 v-if 通过动态组件或 v-if 指令切换不同 Tab 内容,结合点击事件改变当前激活的 Tab。 <template> <di…

vue实现滑动条

vue实现滑动条

Vue 实现滑动条 在 Vue 中实现滑动条可以通过原生 HTML 的 <input type="range"> 或自定义组件实现。以下是两种常见方法: 使用原生 HTML 滑动条 通过…

vue实现扫码

vue实现扫码

Vue 实现扫码功能 使用 vue-qrcode-reader 库 安装 vue-qrcode-reader 库: npm install vue-qrcode-reader 在 Vue 组件中引入…