3分钟学会搭建动态侧边栏导航:Vue + Element-UI

本文介绍了如何在Vue项目中配置vue-router进行页面路由管理,包括安装、引入和基本设置。同时,详细讲解了Element-UI的安装、引入以及在asideNav.vue中的应用,用于实现侧边栏导航功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 效果预览

分为3个部分:

  • 头部
  • 侧边栏:动态选择
  • 页面:根据侧边栏动态跳转
    在这里插入图片描述

2 基本组件

components中包含:头部组件、侧边栏组件、页面1、页面2
在这里插入图片描述
asideNav是我们的侧边栏
pagesOne / pagesTwo 是我们要实现切换的页面,页面随便写点内容就好

App中引入组件

<template>
  <div class="app">
    <!-- 头部 -->
    <myHeader></myHeader>

    <el-container 
      style="height: 100vh; 
      border: 1px solid #eee; 
      margin: 0;
      border: 0;
      padding: 0;">     <!-- style: 隐藏滚动条  去掉白边-->
      <!-- 侧边栏 -->
      <el-aside style="width: 200px;">
        <asideNav></asideNav>
      </el-aside>
      <!-- 主页面 -->
      <el-main>
        <router-view></router-view>  
      </el-main>
    </el-container>
  </div>
</template>
 
<script>
import myHeader from "@/components/myHeader"
import asideNav from "@/components/asideNav"


 
export default {
  name: "App",
  components: {
    myHeader,
    asideNav,
  }
}
</script>

<style>
  html,
  body{
    height: 100%;
    margin: 0;
    border: 0;
    padding: 0;
  }
</style>

3 配置 vue-router

3.1 安装

首先安装vue-router

npm install vue-router

如果上面的命令报错,可能因为要下载的router版本过高,由于vue与vue-router版本兼容的问题,如果下载版本过高,在启动项目时会报错。可以下载低版本的vue-router

npm install vue-router@3.1.3 --save-dev

最后在package.json文件中查看是否下载成功

在这里插入图片描述

3.2 引入vue-router

Main.js文件中
在这里插入图片描述

3.3 配置路由匹配

新建文件:src/routers/index.js
配置路径对应的页面是什么
这里简单示范,有两个主页面进行切换:pagesOne / pagesTwo

//引入依赖及组件
import Vue from 'vue'
import Router from 'vue-router' //引入vue-router
Vue.use(Router)					//注册vue-router

import pagesOne from '../components/pagesOne'
import pagesTwo from '../components/pagesTwo'

export default new Router({
  routes: [
    {
      path: '/',
      name: 'pagesOne',
      component: pagesOne
    },
    {
      path: '/pagesOne',
      name: 'pagesOne',
      component: pagesOne
    },
    {
      path: '/pagesTwo',
      name: 'pagesTwo',
      component: pagesTwo
    }
  ]
})

后续点击侧边栏时,指定的组件将替换该 router-view

4 引入Element-UI

Element-UI官网:https://element.eleme.cn/#/zh-CN/component/installation

4.1 安装

推荐使用npm安装

npm i element-ui -S

4.2 引入样式

public/index.html文件
引入 js 和 css 文件

<!-- 引入样式 -->
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
<!-- 引入组件库 -->
<script src="https://unpkg.com/element-ui/lib/index.js"></script>

在这里插入图片描述

4.3 使用Element-UI

我选择的是这个,将对应的代码到asideNav.vue
在这里插入图片描述

对代码进行修改,对应index的值为我们在index.js中配置的
点击导航一,切换pagesOne
点击导航四,切换pagesTwo
等等
在这里插入图片描述

然后运行,就可以实现了

asideNav.vue的代码

<template>
  <div class="aside" style="height: 100%; width: 100%;">
    <el-row class="tac" style="height: 100%; width: 100%;">
      <el-col :span="12" style="height: 100%; width: 100%;">
        <el-menu 
          default-active="this.$route.path" router
          class="el-menu-vertical-demo"
          @open="handleOpen"
          @close="handleClose"
          background-color="#545c64"
          text-color="#fff"
          active-text-color="#ffd04b"
          style="height: 100%; width: 100%;">
          <el-submenu index="/pagesOne">
            <template slot="title">
              <i class="el-icon-location"></i>
              <span>导航一</span>
            </template>
            <el-menu-item-group>
              <el-menu-item index="/">选项1</el-menu-item>
              <el-menu-item index="/">选项2</el-menu-item>
              <el-menu-item index="/">选项3</el-menu-item>
            </el-menu-item-group>
            <el-submenu index="1-4">
              <template slot="title">选项4</template>
              <el-menu-item index="1-4-1">选项1</el-menu-item>
            </el-submenu>
          </el-submenu>
          <el-menu-item index="">
            <i class="el-icon-menu"></i>
            <span slot="title">导航二</span>
          </el-menu-item>
          <el-menu-item index="/pagesOne">
            <i class="el-icon-document"></i>
            <span slot="title">导航三</span>
          </el-menu-item>
          <el-menu-item index="/pagesTwo">
            <i class="el-icon-setting"></i>
            <span slot="title">导航四</span>
          </el-menu-item>
          <el-menu-item index="/pagesTwo">
            <i class="el-icon-setting"></i>
            <span slot="title">导航四</span>
          </el-menu-item>
        </el-menu>
      </el-col>
    </el-row>
  </div>
</template>

<script>

export default {
    methods: {
      handleOpen(key, keyPath) {
        console.log(key, keyPath);
      },
      handleClose(key, keyPath) {
        console.log(key, keyPath);
      }
    }
  }
</script>
### 关于ElementUI侧边导航栏菜单折叠时显示图标 在使用Element UI的`<el-menu>`组件构建网页应用时,当遇到需要处理侧边导航栏菜单折叠并在此状态下显示图标的情况,可以通过设置特定属性来实现这一需求。对于希望仅在收起模式下展示图标的场景,可利用`collapse`属性控制展开/收缩状态,并通过判断此属性的状态,在模板内动态切换文字与图标的内容呈现。 下面是一个简单的实例代码片段用于说明如何操作: ```html <!-- HTML部分 --> <template> <div style="height: 100%;"> <!-- 使用 collapse 属性控制菜单的展开和折叠 --> <el-menu :default-active="$route.path" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose" background-color="#545c64" text-color="#fff" active-text-color="#ffd04b" :collapse="isCollapse"> <el-submenu index="1"> <template slot="title"> <i class="el-icon-location"></i> <!-- 这里放置icon标签 --> <span v-if="!isCollapse">导航一</span> <!-- 当 isCollapse 为 false 才会渲染这段文本 --> </template> ... </el-submenu> ... </el-menu> </div> </template> <script> export default { data() { return { isCollapse: true, // 控制菜单是否处于折叠状态,默认true表示已折叠 }; }, }; </script> <style scoped> .el-menu-vertical-demo:not(.el-menu--collapse) { width: 200px; min-height: 400px; } </style> ``` 上述代码展示了基本思路:借助`:collapse`绑定变量管理菜单的整体宽度变化;而针对每项子菜单,则是在其标题区域分别加入固定存在的图标以及受条件约束的文字描述——即只有当菜单未被折叠(`v-if="!isCollapse"`成立),才会显示出完整的名称[^1]。 为了进一步优化用户体验,还可以考虑增加一些交互逻辑,比如点击按钮触发`isCollapse`值的变化从而达到手动开关的效果,或是配合媒体查询自动适应不同屏幕尺寸下的布局调整等高级特性。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值