当前位置:   article > 正文

vue2左侧菜单栏收缩展开功能_vue伸缩侧边栏

vue伸缩侧边栏

目录

1. Main.vue页面代码

a. 修改侧边栏属性

b. 修改头部导航栏

c. 定义我们的变量

d. collapse函数

2. Header.vue页面代码

3. Aside.vue页面代码


vue2左侧菜单栏收缩展开目前是非常常见的,我们在日常开发过程中经常会碰到。这一小节我们就详细了解一下这个功能,完善我们的项目开发。

首先,修改Main.vue页面中的一些属性,有些属性需要动态绑定。接下来我们来一步一步实现。

1. Main.vue页面代码

a. 修改侧边栏属性

我们给我们导入的Aside组件动态绑定一个isCollapse。然后再下面的方法中定义

logoTextShow是我们动态绑定的系统名称:当我们点击收缩菜单时,系统名称会隐藏,展示我们的系统图标。

下面是效果展示:

  1. <!--其它代码-->
  2. <!-- 侧边栏 -->
  3. <el-aside :width="sideWidth + 'px'" style="background-color: rgb(238, 241, 246);height: 100%">
  4. <Aside :isCollapse="isCollapse" :logoTextShow="logoTextShow"/>
  5. </el-aside>
  6. <!--其它代码-->

b. 修改头部导航栏

头部导航栏是我们点击收缩展开按钮的地方,我们在这里动态绑定点击函数。collapse函数就是我们动态绑定的函数。

  1. <!--其它代码-->
  2. <!-- 头部导航栏 -->
  3. <el-header style="border-bottom: 1px solid #ccc;">
  4. <Header :collapseBtnClass="collapseBtnClass" :collapse="collapse"/>
  5. </el-header>
  6. <!--其它代码-->

c. 定义我们的变量

我们在return中定义我们的collapseBtnClass图标变量;

定义Aside.vue中的sidewidth左侧菜单栏宽度

还有默认展示我们的系统名称而不是展示logo图片

  1. <!--其它代码-->
  2. data () {
  3. return {
  4. collapseBtnClass: 'el-icon-s-fold',
  5. isCollapse: false,
  6. sideWidth: 220,
  7. logoTextShow: true
  8. }
  9. },
  10. <!--其它代码-->

d. collapse函数

这里我们函数的逻辑是:

当我们点击收缩菜单图标时,isCollapse变量为flase;

当我们的isCollapse变量为false时,this.sidewidth宽度为64,图标设置为收缩图标

然后我们的系统名称隐藏;

相反:我们的菜单宽度为220;设置展开图标,系统名称菜单展示

  1. <!--其它代码-->
  2. methods: {
  3. collapse () {
  4. this.isCollapse = !this.isCollapse
  5. if (this.isCollapse) {
  6. this.sideWidth = 64
  7. this.collapseBtnClass = 'el-icon-s-unfold'
  8. this.logoTextShow = false
  9. } else {
  10. this.sideWidth = 220
  11. this.collapseBtnClass = 'el-icon-s-fold'
  12. this.logoTextShow = true
  13. }
  14. }
  15. }
  16. <!--其它代码-->

2. Header.vue页面代码

首先在我们面包屑上面加一个span标签:

绑定我们的class为collapseBtnClass:

设置一个点击事件:collapse

  1. <!--其它代码-->
  2. <span :class="collapseBtnClass" style="cursor: pointer; font-size: 18px" @click="collapse"></span>
  3. <!--其它代码-->

这里牵扯到一个父子传值和子子传值。父子传值我们在子组件里面接收就要用props来接收

  1. <!--其它代码-->
  2. props: {
  3. collapseBtnClass: String,
  4. collapse: Function
  5. }
  6. <!--其它代码-->

3. Aside.vue页面代码

我们在标签<el-menu>绑定我们的属性:

  1. <el-menu
  2. :default-openeds="[]" style="min-height: 100%; overflow-x: hidden"
  3. background-color="#1f2d3d"
  4. text-color="#fff"
  5. default-active="/home"
  6. active-text-color="rgb(75 175 255)"
  7. :collapse-transition="false"
  8. :collapse="isCollapse"
  9. router>

系统名称给一个v-show事件

  1. <div style="height: 60px; line-height: 60px; text-align: center">
  2. <img src="../assets/logo.png" alt="" style="width: 20px; position: relative; top: 2px;">
  3. <b style="color: white" v-show="logoTextShow">仓库管理系统</b>
  4. </div>

然后我们在下面接收父组件传递的值:

  1. <!--其它代码-->
  2. props: {
  3. isCollapse: Boolean,
  4. logoTextShow: Boolean
  5. }
  6. <!--其它代码-->

现在会有一个问题,我们点击收缩菜单栏时菜单文字会有遗留,我们给一个样式来隐藏文字

  1. <style>
  2. .el-menu-item.is-active {
  3. background-color: rgb(38, 52, 69) !important;
  4. }
  5. .el-menu-item:hover {
  6. background-color: rgb(38, 52, 69) !important;
  7. }
  8. .el-submenu__title:hover {
  9. background-color: rgb(38, 52, 69) !important;
  10. }
  11. /*解决收缩菜单文字不消失问题*/
  12. .el-menu--collapse span {
  13. visibility: hidden;
  14. }
  15. </style>

以上就是我们的菜单栏收缩展开全部教程。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/971774
推荐阅读
相关标签
  

闽ICP备14008679号