element-ui el-table 数据变化时表格出现抖动

element-ui el-table 数据变化时表格出现抖动

项目有个需求,有一个表格是通过改造el-table来适应需求,表格的head和body数据都是通过v-for渲染遍历生成的,通过多选框Checkbox来勾选表格头部需要展示的数据,进行切换到时候表格出现抖动不美观。
部分原代码:

<el-table :data="tableData" border class="spec-table">
     <el-table-column v-for="(item,index) in tableTh" :key="index" :prop="item.txt" :label="item.label" width="120">
              <template slot-scope="scope">
                <div v-if="tableTh[index].txt=='skuImg'">
                  ......
                </div>
               </template>
      </el-table-column>
</el-table>

效果图
在这里插入图片描述

出现抖动原因:
1,审查元素el-table__head,el-table__body 的 width 不停被设置导致表格抖动,当未设定列表宽时,element有做自动检测适应。这造成了一种情况,即上下滚动条的出现时,触发宽度,使得上下滚动条消失,再次触发宽度变换,然后如此循环。
2,页面出现重绘.
3,v-for的key属性渲染不对

解决:
1,表格数据的v-for中的key使用随机数:key=“Math.random()”;使用随机数可能会出现坑,慎用。有的使用随机数不出现抖动,有的使用正确的值不出现抖动。

2,检查布局中的:overflow: auto, 避免flexbox 子元素设置这个属性.
给el-table__head,.el-table__body添加 width: 99.9%!important; 属性,强制宽度。

.el-table{
       width:99.9%!important;//不让它到临界值,这样可避免自动计算
}
 /deep/ .el-table__header , /deep/ .el-table__body{
      overflow: hidden;
      width: 99.9%!important;
    }

3,再者可以设置elementui表格的容器的高度=table容器高度 / 行数

//重写表格样式,不在自动计算,解决表格渲染时闪烁问题,设置table容器高度/行数
.el-table .cell{
  height:20px!important;
}

如果切换表格的数据时表格是向下而上的抖动,可以使用element 表格中的dolayout函数解决:对 Table 进行重新布局,当 Table 或其祖先元素由隐藏切换为显示时,可能需要调用此方法。

    this.$nextTick(() => { //在数据加载完,重新渲染表格
    		this.$refs['table'].doLayout();
    })
                
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值