【element bug】拖动浏览器边缘或者放大缩小谷歌浏览器,chrome崩溃 “喔唷,崩溃啦”

项目场景:

场景:大屏项目侧边栏用el-tabs里面放了树,样式的宽高不是写死的

崩溃场景:
展开侧边栏el-tabs后,拖动浏览器边缘或者放大缩小谷歌浏览器,造成chrome崩溃
偶尔树节点少的时候不会发生崩溃,多的时候才崩溃(造成误导)

操作场景:
用户正常使用会展开这个侧栏,放在那不管,继续使用别的功能。如果出现某个功能造成窗口大小变化resize,就会整个页面崩溃


问题解决

浏览器崩溃

侧边栏构成是:div套el-tabs,el-tabpane里面又套了树。

  1. 当树节点过多时,浏览器resize,页面必会崩溃;(基于这个特点,一开始认为应该是树造成的这个现象,因为树技术栈较老是ztree,确实有可能。但在写了几个大数据量的demo后,发现和ztree关系应该不大。)
  2. 后来向外层找,发现把树放进el-tabs里会崩溃,而把树单独写在外面则不会。于是从el-tabs入手,网上搜发现大量由于el-tabs造成的页面卡死问题,应该八九不离十了。
    网上几种方案:
    1. el-tabs外层套el-row 和el-col (无效)
    2. 升级或降级elementui 和vue版 (无效且麻烦)
    3. 原来在el-tabpane里的内容提出去,用v-if判断显示(有效)采用了方案3
  3. 用v-if显示确实有效。但是此时树的高度溢出了,需要给它上高度让它有滚动条可以显示。css里写height后,发现崩溃现象又出来了。试了几种display:flex、max-height、height都会崩溃,这个崩溃问题是写了overflow:auto解决的
  4. 树可以正确显示了,浏览器再缩放也没有崩溃问题。然后需要吧有一些样式统一一下,比如滚动条样式,和其他的一些样式。但是,崩溃又发生了。原因是写了position,绝对定位和相对定位都会导致崩溃,所以能去除的地方都去除了。再次resize浏览器不会崩溃

总结:

  1. el-tabs 里面不要放内容,特别是嵌套层级深的内容。虽然这么做很智障,github的issue也有很多条相关的,但是没看到解决方案。非要用的话,就把内容部分单独提出去写
  2. chrome在resize的时候,可能会被一些不合理的样式影响,虽然height和position的具体原因没深究,但是碰到了可以避免一下
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值