vue3项目table高度自适应解决方法

一、问题描述:

在开发运维管理系统平台时候涉及到大量的表格的增删改查,需求要求不管table表格有无数据,数据多少,都要有个固定高度,保证底部有滚动条的一直在分页最上边的底部,而不要贴在table数据下方。

上图:

解决方案:

table表格由于是全局封装,通过配置项控制表头内容的,因此高度改成固定值不能满足所有模块的表格,因此这个地方思路:

1、将全局表格分成有几行搜索,有无button按钮,有无分页,等各种特殊情况

上图:三行搜索、有button、有分页,因此计算出的高度要减去这些和边距

//以下是aseets文件夹中css里面的写在common.less的全局样式
  @pageHeader: 64px; //头部
  @crumbs: 24px; //面包屑
  @pagePadding: 24px * 2; //上下的padding
  @pagesize:32px + 10px; //分页和分页的上padding
  @mainPage: calc(100vh - @pageHeader - @crumbs - @pagePadding);
// 三行搜索
  @twoSearch: calc(@mainPage - 24px - 156px - 32px - 32px - 8px - @pagesize);
  --page-content-search-third-min-height: @twoSearch;

2、计算出此情况下table高度最少为多少

计算出高度是@twoSearch,赋值给--page-content-search-third-min-height

//写在table界面,各个比较特殊的类的高度
.table-search-third {
  height: var(--page-content-search-third-min-height);
}

在用到他的界面配置项有个tableClass引用这个类

3、这个值获取到赋值给table,让他在窗口伸缩时候动态改变高度。

下边方法在刚进入页面或者监听到窗口伸缩时候就会去拿此模块table高度应该是多少,然后赋值给table的height,就能实现无论数据多少高度都是固定的。

//解决页面自适应问题---------------
const tableHeight = ref()
onMounted(() => {
  tableHeight.value = document.querySelector('.table')?.clientHeight

  window.addEventListener('resize', resize)
})
onUnmounted(() => {
  window.removeEventListener('resize', resize)
})
const resize = () => {
  tableHeight.value = document.querySelector('.table')?.clientHeight
}
const tableHeightClass = computed(() => {
  // console.log(tableHeight.value, ' tableHeight.value')
  if (tableHeight.value) {
    let height = tableHeight.value
    console.log(height)
    return height
  }
})

 注意:难点是整个系统使用的是一个table组件,但是每个模块table的有效高度可能由于内容差距略有差别,因此采用此方法解决。若只考虑一个table,那么直接固定高度就可以了。

本人还在学习阶段,如果有更好的解决方式很欢迎大佬前来评论!!!!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值