当前位置:首页 > VUE

vue实现左侧导航

2026-01-17 06:51:02VUE

Vue 实现左侧导航的方法

使用 Element UI 的导航组件

Element UI 提供了现成的导航组件,适合快速搭建左侧导航栏。安装 Element UI 后,可以直接使用 el-menu 组件。

vue实现左侧导航

<template>
  <el-menu
    default-active="1"
    class="el-menu-vertical"
    background-color="#545c64"
    text-color="#fff"
    active-text-color="#ffd04b">
    <el-menu-item index="1">
      <i class="el-icon-menu"></i>
      <span>首页</span>
    </el-menu-item>
    <el-submenu index="2">
      <template #title>
        <i class="el-icon-location"></i>
        <span>导航一</span>
      </template>
      <el-menu-item index="2-1">选项1</el-menu-item>
      <el-menu-item index="2-2">选项2</el-menu-item>
    </el-submenu>
  </el-menu>
</template>

<script>
export default {
  name: 'LeftNav'
}
</script>

<style>
.el-menu-vertical {
  height: 100vh;
}
</style>

自定义 Vue 导航组件

如果需要更灵活的导航栏,可以手动实现一个基于 Vue 的导航组件。通过 v-for 动态渲染导航项,结合路由实现跳转。

vue实现左侧导航

<template>
  <div class="nav-container">
    <div 
      v-for="item in navItems" 
      :key="item.path"
      class="nav-item"
      :class="{ 'active': currentRoute === item.path }"
      @click="navigateTo(item.path)">
      {{ item.name }}
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      navItems: [
        { name: '首页', path: '/' },
        { name: '关于', path: '/about' },
        { name: '联系', path: '/contact' }
      ],
      currentRoute: '/'
    };
  },
  methods: {
    navigateTo(path) {
      this.currentRoute = path;
      this.$router.push(path);
    }
  }
};
</script>

<style>
.nav-container {
  width: 200px;
  background-color: #2c3e50;
  color: white;
  height: 100vh;
}
.nav-item {
  padding: 12px 20px;
  cursor: pointer;
}
.nav-item:hover {
  background-color: #34495e;
}
.active {
  background-color: #16a085;
}
</style>

结合 Vue Router 实现导航

Vue Router 可以与导航组件结合,实现路由跳转和高亮当前路由。通过 router-link 或编程式导航完成跳转。

<template>
  <div class="sidebar">
    <router-link 
      v-for="route in routes" 
      :key="route.path"
      :to="route.path"
      class="nav-link"
      active-class="active">
      {{ route.name }}
    </router-link>
  </div>
</template>

<script>
export default {
  data() {
    return {
      routes: [
        { name: '仪表盘', path: '/dashboard' },
        { name: '用户管理', path: '/users' },
        { name: '设置', path: '/settings' }
      ]
    };
  }
};
</script>

<style>
.sidebar {
  width: 220px;
  background: #f5f5f5;
  padding: 20px;
}
.nav-link {
  display: block;
  padding: 10px;
  color: #333;
  text-decoration: none;
}
.active {
  color: #42b983;
  font-weight: bold;
}
</style>

响应式左侧导航

为了实现响应式效果,可以通过 CSS 媒体查询或 Vue 的状态管理控制导航栏的显示与隐藏。

<template>
  <div class="nav-wrapper" :class="{ 'collapsed': isCollapsed }">
    <button @click="toggleCollapse">切换</button>
    <div class="nav-content">
      <!-- 导航内容 -->
    </div>
  </div>
</template>

<script>
export default {
  data() {
    return {
      isCollapsed: false
    };
  },
  methods: {
    toggleCollapse() {
      this.isCollapsed = !this.isCollapsed;
    }
  }
};
</script>

<style>
.nav-wrapper {
  width: 250px;
  transition: width 0.3s;
}
.collapsed {
  width: 60px;
}
@media (max-width: 768px) {
  .nav-wrapper {
    width: 100%;
  }
}
</style>

标签: vue
分享给朋友:

相关文章

vue实现关键词轮播

vue实现关键词轮播

Vue 实现关键词轮播 基础实现方案 使用 Vue 的 v-for 和 setInterval 实现基础轮播效果: <template> <div class="keyword…

vue实现swipe

vue实现swipe

Vue实现Swipe功能的方法 使用第三方库(推荐) Vue生态中有多个成熟的轮播/滑动组件库,例如vue-awesome-swiper或swiper/vue。以下是基于swiper/vue的实现示例…

vue实现mui

vue实现mui

使用 Vue 实现 MUI(Material-UI)风格的界面 Vue 本身不直接提供 MUI(Material Design)组件,但可以通过集成第三方库或手动实现来达到类似效果。以下是几种常见方法…

vue搜索实现

vue搜索实现

Vue 搜索功能实现方法 基于计算属性的搜索 在 Vue 中可以通过计算属性实现简单的搜索功能。这种方式适合小型数据集,利用 JavaScript 的 filter 方法进行筛选。 data() {…

vue实现addclass

vue实现addclass

Vue 实现动态添加 class 的方法 在 Vue 中动态添加 class 可以通过多种方式实现,以下是常见的几种方法: 使用对象语法 通过绑定一个对象到 :class,可以动态切换 class…

vue实现注册

vue实现注册

Vue 实现注册功能 注册功能通常涉及前端表单、数据验证、与后端 API 的交互等步骤。以下是一个完整的 Vue 实现注册功能的方案。 创建注册表单 使用 Vue 的模板语法创建注册表单,包含用户名…