一、Element UI 中菜单的折叠与展开

  1. Element UI中的官方文档中,在NavMenu 导航菜单中,在Menu Attribute 中,有一个 collapse 属性。它的作用是是否水平折叠收起菜单(仅在 modevertical 时可用),是一个Boolean类型,默认值为false,我们可以根据这个 collapse 属性,通过设置它的true或者false的值控制菜单的折叠与展开。
  2. 在导航菜单头部,可以设置一个按钮,通过点击控制左侧菜单的显示与隐藏,代码如下:
<div class="toggle-button" @click="toggleCollapse">|||</div>
  1. data中定义一个数据isCollapse,是一个变量,控制它的值实现切换,默认为false,代码如下:
 isCollapse: false,
  1. el-menu 中,可以动态绑定 collapse的值,代码如下
:collapse="isCollapse"
  1. method中,定义一个之前按钮绑定点击事件的方法,toggleCollapse,在这个方法当中,控制isCollapse的值,进行取反操作,这样就实现了菜单的折叠与展开,代码如下:
    // 点击按钮,切换菜单的折叠与展开toggleCollapse () {this.isCollapse = !this.isCollapse}
  1. 菜单的折叠与展开Element中默认是有动画的,不方便显示,我们可以选择关闭,在Menu Attribute中,有一个collapse-transition 属性。它的作用是是否开启折叠动画,是一个 boolean 类型,默认值为true,我们把它设置为false,就可以关闭折叠动画了,代码如下:
 :collapse-transition="false"
  1. 在左侧菜单的展开与折叠中,会发现一个问题,文本和图标折叠了,但是菜单的长度并没有折叠,发现原因是菜单的长度给了一个固定的值,而实际上我们需要动态给定长度。如果菜单是展开的,长度是等于文本的长度+图标的长度。如果菜单是折叠的,长度是等于图标的长度。我们可以根据isCollapse的值进行判断,通过它的值为true或者是false,来给定不同的长度,代码如下:
<el-aside :width="isCollapse?'64px':'200px'">

二、菜单的折叠与展开实现

  1. 主目录菜单的完整代码
<template><el-container class="home-container"><!-- 头部区域 --><el-header><el-button type="info" @click="logout">退出</el-button></el-header><!-- 内容主题区域 --><el-container><!-- 侧边栏 --><el-aside :width="isCollapse?'64px':'200px'"><div class="toggle-button" @click="toggleCollapse">|||</div><!-- 侧边栏菜单区域 --><el-menubackground-color="#333744"text-color="#fff"active-text-color="#409EFF"unique-opened:collapse="isCollapse":collapse-transition="false":router="true":default-active="activePath"><!-- 一级菜单 --><el-submenu :index="item.id + ''" v-for="item in menuList" :key="item.id"><!-- 一级菜单的模版区域 --><template slot="title"><!-- 图标 --><i :class="iconsObj[item.id]"></i><!-- 文本 --><span>{{ item.authName }}</span></template><!-- 二级菜单 --><el-menu-item :index="'/'+subItem.path" v-for="subItem in item.children" :key="subItem.id" @click="saveNavState('/'+subItem.path)"><template slot="title"><!-- 图标 --><i class="el-icon-menu"></i><!-- 文本 --><span>{{ subItem.authName }}</span></template></el-menu-item></el-submenu></el-menu></el-aside><!-- 右侧内容 --><el-main><router-view></router-view></el-main></el-container></el-container>
</template><script>
export default {data () {return {menuList: [],iconsObj: {'125': 'iconfont icon-yonghu1','103': 'iconfont icon-quanxian','101': 'iconfont icon-shangpin','102': 'iconfont icon-dingdan2','145': 'iconfont icon-icon_huabanfuben'},isCollapse: false,// 被激活的链接地址activePath: ''}},created () {this.getMenuList()this.activePath = window.sessionStorage.getItem('activePath')},methods: {// 退出功能logout () {// 清空tokenwindow.sessionStorage.clear()this.$router.push('/login')},// 获取所有的菜单async  getMenuList () {const { data: res } = await this.$http.get('menus')if (res.meta.status !== 200) return this.$message.error(res.meta.msg)this.menuList = res.dataconsole.log(res)},// 点击按钮,切换菜单的折叠与展开toggleCollapse () {this.isCollapse = !this.isCollapse},// 保存链接的激活状态saveNavState (activePath) {window.sessionStorage.setItem('activePath', activePath)this.activePath = activePath}}
}
</script><style lang="less" scoped>
.home-container {height: 100%;
}
.el-header {background-color: #373d41;display: flex;justify-content: space-between;padding-left: 0;align-items: center;color: #fff;font-size: 20px;> div {display: flex;align-items: center;span {margin-left: 15px;}}
}.el-aside {background-color: #333744;.el-menu {border-right: none;}
}.el-main {background-color: #eaedf1;
}.iconfont {margin-right: 10px;
}.toggle-button {background-color: #4a5064;font-size: 10px;line-height: 24px;color: #fff;text-align: center;letter-spacing: 0.2em;cursor: pointer;
}
</style>
  1. 菜单的展开与折叠的效果实现
  • 菜单的展开效果
  • 菜单的折叠效果

vue结合Element UI如何实现点击左侧菜单的折叠与展开相关推荐

  1. Vue+JS+Element UI实战(电商项目1)

    目录 1.电商业务概述 2.电商后台管理系统的功能 ​3.项目初始化步骤 4.后台项目的环境安装配置 4.1. API V1 接口说明 4.2. 支持的请求方法 4.3. 通用返回状态说明 5.测试后 ...

  2. 【Vue】 element ui 引入第三方图标

    最近一个项目用到 vue 和 element ui开发前端.使用element ui自带的icon太少,所以引入第三方的.截止目前为止国内外网络上的相关教程我搜索到没超过5篇,而且都不详细,即使全部阅 ...

  3. 关于vue.js element ui 表单验证 this.$refs[formName].validate()的问题

      方法使用前需了解: 来自"和"小编的小提示: 首先打印一下this.$refs[formName],检查是否拿到了正确的需要验证的form. 其次在拿到了正确的form后,检查 ...

  4. Node mysql mvc vue_net MVC +Vue.js+Element UI 笔记

    最近项目需求,要在MVC里用Vue 与 Element UI,故而做个笔记来记录一些遇到的问题和处理思路 (方式比较麻瓜,如果不是临时用的话,建议还是学一下Vue-cli,新项目还是老老实实前后端分离 ...

  5. element ui 中 el-checkbox-group 点击一个全部选中的问题

    element ui 中 el-checkbox-group 点击一个全部选中的问题 原因是:checkbox-group中的v-modle要单独一个数组对象,不能作为表单对象,ruleForm中的一 ...

  6. Vue安装element ui踩坑

    在vue安装element ui 的过程中报了许多错误,慢慢踩坑,希望能帮到各位 1.  输入  vue add element    输入 y y zh-CN 如果报错  ERROR  comman ...

  7. Element UI样式修改之NavMenu导航菜单

    目录 Element UI样式修改之NavMenu导航菜单 一.成果展示 二.步骤 三.完整代码 Element UI样式修改之NavMenu导航菜单 一.成果展示 Element UI官网给出的例子 ...

  8. ajax实现简单的点击左侧菜单,右侧加载不同网页

    实现:ajax实现点击左侧菜单,右侧加载不同网页(在整个页面无刷新的情况下实现右侧局部刷新,用到ajax注意需要在服务器环境下运行,从HBuilder自带的服务器中打开浏览效果即可) 图片.png 原 ...

  9. vue开源Element UI表单设计及代码生成器

    1 可视化设计器 设计器基于Element UI ,可通过点击或拖拽的方式设计基本表单, 设计器生成的代码可直接运行在基于 Element 的 vue 项目中. github仓库   https:// ...

最新文章

  1. centos6.6 Kickstart无人值守安装(一):原理篇
  2. 一个恶心的无法同步服务器与pda时间的龌龊问题
  3. 从脸部识别到火星机器人,正在改变世界的计算机视觉
  4. 正则表达式中的字符类
  5. 阿里云媒体转码MTS使用教程
  6. 挖掘经典:几乎被人遗忘的HTML七种用法 (转)
  7. 华硕服务器主板型号命名规则,常见主板命名规则
  8. 数据库查询字段为空时,返回0
  9. 详解CNN五大经典模型:Lenet,Alexnet,Googlenet,VGG,DRL
  10. 如何查看系统启动时间-
  11. matlab用矩形法求函数定积分,C语言使用矩形法求定积分的通用函数
  12. 王建国——2020年最受人民喜爱的艺术家
  13. 微信公众号与小程序对接文档
  14. 推荐六本前端开发必看的书籍
  15. 证伪主义 | A Little Sight of Falsification
  16. SQL server 常见面试题
  17. 国际标准SHARE78七级灾难备份方案
  18. 小程序选择手机图片后 压缩图片 转码base64
  19. 火爆全网送给女朋友的微信每日多次消息推送程序来了!多版本多平台!
  20. 006.Sql条件查询

热门文章

  1. avr单片机led数码管六位动态显示时分秒c语言程序,AVR单片机8位数码管显示的程序实现(两种方法介绍)...
  2. 应用计算机软件指南,2017计算机二级Access软件应用指南
  3. -bash:exprot:command not found的问题处理
  4. 动态跟踪手的状态模拟飞行游戏
  5. 什么是闭路电视系统,如何提高闭路电视系统的性能
  6. Esxi6.7直通板载USB控制器给Linux虚拟机并使用USB无线网卡(CF-812AC)上网
  7. Ardupilot添加一个新模式全攻略,以Copter为例
  8. 第一次使用spen可能遇到的问题
  9. 2021双十一订单翻倍也不怕,看百度智能云强大OCR赋能快递物流
  10. 加在形参上,spring的@NonNull和lombok的@NonNull的区别