解决 element-ui 的 el-table 自动吸顶(支持fixed,keep-alive的使用)

需求

在使用el-table时,表格高度自适应(不出现双滚动条,仅body有滚动条),滚动到表头的位置时自动吸附在顶部

实现方法/原理

1、通过监听滚动事件、获取表头的高度,位置,在特定的情况下修改el-table-header的style属性
2、由于考虑到使用keep-alive,所以每个表格组件都需要加一个唯一的class值,用于获取当前唯一的表格的dom
3、因为项目使用了vue2.0版本,考虑到便捷性,采用了mixins混入方案,只测试vue2.0,不建议使用全局混入

效果图 预览地址

在线预览地址:https://lsz579.github.io/element-table-sticky/

在这里插入图片描述

使用方法

1.设置滚动的节点
sticky-table.js文件

scrollClass:'.main-container',//设置滚动的body

layout内容滚动

.main-container {
  height: 100vh !important;
  overflow: auto;
  background-color: rgba(231, 231, 231, 0.575);
}

2.引入并注入sticky-table mixins,设置当前表格组件的父元素class,即parent
headerWidth是用于生成自定义表格滚动条的(固定在底部,详情看git上的例子)

import stacky from '@/utils/table-sticky'
export default{
 	mixins: [stacky],
 	data() {
	   return {
	     tableColumns: [],
	     tableData: [],
	     headerWidth: 0,
	     parent: 'self-table',
	   }
  },
}
  1. 暴露出来的方法,可直接this.xx调用,大多数用于动态修改表头或者拖动的时候,需要更新表格样式
方法名说明
clearListener清空sticky监听事件,页面卸载等情况使用
updateFixedRight更新右侧固定栏样式
headerDragend拖拽改变表头宽度,更新表格宽度,或有表格改动时导致的样式错乱使用
setScrollXWidth用于更新tableWidth,headerWidth,制作虚拟滚动条
clearFixedStyle清除固定顶部的样式

当前只为了实现功能需求,由于时间仓促,并没有做太多的优化,后期有时间会进行一下性能上的优化

文章不做太多的详述,完整例子已上传到gitHub,地址 https://github.com/LSZ579/element-table-sticky.git
,欢迎各位大佬提bug,和修改意见,如觉得有帮助,请给一个start

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值