elementUI table fixed设置后,表格无法对齐,滚动条被覆盖(亲测有用)

elementUI table fixed设置后,表格无法对齐,滚动条被覆盖

elementUI table fixed设置后,表格无法对齐,滚动条被覆盖
element中的table表格功能是非常好用的一款功能,但是在实际使用中发现了两个问题:

1、table开启fixed功能后底部滚动条被覆盖:
在这里插入图片描述

滚动条被覆盖,导致被覆盖部分没办法拖动

解决方法:

设置公共样式,将被遮罩部分减少
// 让固定列的高自适应,且设置!important覆盖ele-ui的默认样式
// 20px 为滚动条的高度
.el-table__fixed, .el-table__fixed-right{
height: calc(100% - 20px) !important;
}

上面代码写完后,会遇到另外一个问题,但没有滚动条的时候,内容会给挤上去,如图所示

image.png

这时候就需要加上另外一个代码了

// 当表格没有滚动条时
.el-table__body-wrapper.is-scrolling-none.el-table__fixed-right,.el-table__body-wrapper.is-scrolling-none.el-table__fixed{
height: 100% !important;
box-shadow: none !important;
}

ps:个人项目实际测试过程中,其实只要
.el-table__fixed-body-wrapper {
height:100 !import;
}

就行

2、table开启fixed功能后,上下滚动行无法对齐

如图所示:
在这里插入图片描述

表格滑动到最后一行后出现无法对齐的情况,这个问题主要是滚动条的原因,因为你设置了::-webkit-scrollbar{ width:1px; height:10px; },即:滚动条的width和height不一致导致的,设置成一样的就好了。

解决方法:

通过css样式,修改表格样式
.el-table__fixed-body-wrapper .el-table__body {
padding-bottom: 20px; // 滚动条高度
}

ps:这个高度并不是20px,而是你::-webkit-scrollbar的height多高,你就最好写多高,这样差异是最小的

复制代码
如果没有生效注意使用deep穿透改样式,或者加上!important

注:本项目所有的el-table表格的滚动条都增加了高度,故解决方法都是写在全局样式里面,请根据实际情况,修改相应的样式

个人结论:
.el-table_fixed, el-table__fixed-right {
height:100% !important;
}
.el-table__fixed-body-wrapper {
height:100 !import;
}
.el-table__fixed-body-wrapper .el-table__body {
padding-bottom: 20px; // 滚动条高度
}

参考文献:
https://link.juejin.cn/?target=https%3A%2F%2Fwww.cnblogs.com%2Fsixrookie%2Fp%2F14777274.html
https://link.juejin.cn/?target=https%3A%2F%2Fblog.csdn.net%2Fnick_king%2Farticle%2Fdetails%2F109583883

本文转载地址
https://juejin.cn/post/7124568180881621000

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要保持滚动条位置不变,可以监听分页器的 `current-change` 事件,在事件处理函数中获取当前滚动条的位置,并将其保存下来。然后在下一页加载完毕后,再将滚动条位置设置为之前保存的位置即可。 示例代码如下: ```html <template> <div> <el-table :data="tableData" height="400" style="width: 100%" @sort-change="handleSortChange"> <el-table-column prop="date" label="日期" width="180"></el-table-column> <el-table-column prop="name" label="姓名" width="180"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> <el-pagination @current-change="handlePageChange" :current-page="currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="pageSize" :total="total"> </el-pagination> </div> </template> <script> export default { data() { return { tableData: [], currentPage: 1, pageSize: 10, total: 100, scrollTop: 0, // 保存滚动条位置 }; }, methods: { fetchData() { // 发送请求获取数据 // ... // 在请求完成后设置滚动条位置 this.$nextTick(() => { this.$refs.tableRef.$el.querySelector('.el-table__body-wrapper').scrollTop = this.scrollTop; }); }, handlePageChange(currentPage) { this.scrollTop = this.$refs.tableRef.$el.querySelector('.el-table__body-wrapper').scrollTop; this.currentPage = currentPage; this.fetchData(); }, handleSortChange(sort) { console.log(sort); }, }, mounted() { this.fetchData(); }, }; </script> ``` 在上述代码中,`handlePageChange` 方法中保存了当前滚动条位置到 `scrollTop` 变量中,并在请求数据完成后重新设置滚动条位置。`$nextTick` 方法会在下一次 DOM 更新后执行回调函数,确保在滚动条位置设置之前,表格已经完成了渲染。同,通过 `$refs` 属性获取到表格实例,然后通过 `querySelector` 方法获取到表格主体区域的 DOM 元素,从而获取和设置滚动条位置。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值