首先判断表格是否有滚动条,没滚动条就隐藏悬浮左侧固定列,使用visibility:hidden
hasVerticalScrollbar(table) {
const tableBoxWidth = this.tableBox?.offsetWidth || undefined
const tableWidth = document.querySelector('table')?.offsetWidth || undefined
return tableBoxWidth < tableWidth;
}
this.$nextTick(() => {
const fixedLeft = document.querySelectorAll('.ant-table-fixed-left') || []
if (!this.hasVerticalScrollbar()) {
fixedLeft.forEach(item => {
item.style.visibility = 'hidden'
})
} else {
fixedLeft.forEach(item => {
item.style.visibility = 'visible'
})
}
})
研究方向错误,一开始想的是通过获取dom元素,拿到悬浮的固定列,剥离出绑定的key值,获取到所有表头跟单元格,通过循环的方式,定位到相同key的表头下标,根据当前的下标隐藏重复的表头跟单元格,但是后边的列会继续补上去,跑到悬浮列下边被挡住,始终达不到想要的效果,最后灵机一动通过判断表格是否满足滚动条件来改动,有滚动条就显示悬浮固定列,没有滚动条就去掉固定列,完美解决这个问题,就不需要获取并操作大量dom元素。