vue手风琴折叠效果图

Table of Contents

1、在需要点击触发事件的位置加上click事件

2、在点击区域内合适的地方加上图标

3、实现foldSwitch方法

4、实现changeStyle方法


VUE+element UI

这里简单记录如何手动实现手风琴,在使用不了现成的情况下,因为涉及到公司项目,所以一下总结的比较稀碎,合适有vue和element UI的基础的同学看,请见谅,我会把关键的点都记录下来。

1、在需要点击触发事件的位置加上click事件

@click="foldSwitch(index)"

 foldSwitch方法是点击的时候触发的,实现的目标有二:

1,实现该点击的列表展开或关闭

2,在点击列表展开的同时,其他列表要关闭

index:是for循环遍历的index,这个是用来判断是第几项被点击的。

2、在点击区域内合适的地方加上图标

 <i :class="status[index]?'el-icon-arrow-down':'el-icon-arrow-right'"></i>

这个是跟折叠面板的图标一样,展开的时候箭头向下,折叠的时候箭头向右。

status是个数组:

 status: [false, false, false],

为什么我需要status?我的实际情况是我能确定的我的折叠面板最多三个,里面初始化都是false,说明都是默认折叠的。

比如说我点击了第一个列表,index=1,那么此时的status为status: [true, false, false],导致的情况是第一个列表的图标变化。以此类推。

3、实现foldSwitch方法

foldSwitch(index) {
       //折叠
      if (this.status[index]) {
        this.changeStyle("none", ".el-collapse", index);
        this.status= [...this.status];
        this.status[index] = false;
      } 
        //展开
        else {
        for (let i = 0; i < this.neighbourVesselsTableData.length; i++) {
          if (i == index) {
            this.changeStyle("block", ".el-collapse", index);
            this.status= [...this.status];
            this.status[index] = true;
          } else {
            this.status= [...this.status];
            this.changeStyle("none", ".el-collapse", i);
            this.status[i] = false;
          }
        }
      }
    },

changeStyle方法接下来细讲。

折叠的状态是从true变为false,所以先完成折叠操作,在给status重新赋值。

至于为什么要多写一句

this.status= [...this.status];

这个是重点也是关键

因为每次点击触发展开或折叠操作,变化的是status数组里面的数据,不是整个status数组,所以vue是检测不到status是已经发生改变的,解决办法就是加上面这句,让status重新生成,地址变化,vue检测到变化就会自动渲染到页面上,这时展开或折叠才会发生视觉效果。

 

展开也是重点,因为是手风琴,所以只能展开一项。我用到了for循环,判断是否等于当前点击的这一列表,如果是,该列表会展开,其他都会折叠,这样就达到了手风琴效果。

4、实现changeStyle方法

    changeStyle(status, className, index) {
      let dom = document.querySelectorAll(className);
      dom[index].style.display = status;
    },

该方法是比较原生的了,直接操作dom节点让列表展示或消失。

status:状态,“none”表示折叠,“block”表示展开;

className:类名,被折叠或展开的类名;

index:索引,表示该类名的dom节点的第几个,也就是第几个列表被展开或折叠。

1. git提交分支相关 在本地新建分支,保证和远程分支一样 git checkout -b 分支名 如果分支已存在,只需要切换的话 git checkout 分支名 提交前先把代码
如何用JAVA编写一个简单用户登陆界面? 我想利用JAVA编写一个简单的用户登陆界面,用于信息管理系统的,应该如何着手呢?请高手指教! 搜索更多相关的解决方案: JAVA  界面  编写 
随着各种移动设备的更新换代,移动互联网呈飞速发展状态,移动应用更是呈指数增长。在这种情况下,App的测试需求正逐年增大,已有赶超Web测试的势头。今天,就结合我个人的工作经历,已经相关的专业知识,
这篇文章我是第一次看见,关于app兑换码我也是第一次知道这么用。转给大家,希望能够对大家有所帮助。 App Store兑换码(促销码)是开发者市场营销过程中常常被忽略的一点,开发者并没有挖掘出兑换
目前Win11系统还是拥有周期的更新,并且我们电脑会自动下载这个补丁来让电脑更加安全,但这些升级包并不会在第一时间自行删除,而是会堆积在C盘中,这会导致我们存储空间严重不足,那么要如何去删除呢?
我们在使用电脑的时候有需要切换用户登录,windows10系统下怎么切换用户呢?下面由学习啦小编为你整理了windows10开机界面怎么切换用户的相关方法,希望对你有帮助! windows10
Mysql 更改数据存储目录,只讲干货 1. 找到原存储位置 2.暂停MySQL服务 3.将1查到的文件夹中的data文件剪切到其他盘符 4.更改MySQL服务下的My.ini文件 5.重
关于node的使用已经很久了,使用范围也很广,似乎有前端的地方就有node,那么来思考一个问题,node到底是用来干嘛的呢?本文从五个大的方面对该问题进行了解释。 我们知道node的出现,让前
一、下载最新的软件版本:node # wget [url]ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.0rc3.tar.gz[/url]安
目录 第一部分 单项选择题.....................................................................................
广告关闭 2017年12月,云+社区对外发布,从最开始的技术博客到现在拥有多个社区产品。未来,我们一起乘风破浪,创造无限可能。 进入“中文语音识别”目录,然后运行下面的命令 pocketsphinx
快来领取红包
您的专属优惠已准备好!
打开微信扫一扫,关注公众号~
SiteMap 网站地图 文本地图 RSS