改变浏览器视口大小后表格自适应

一个页面,显示如下图,此时表格内容可以全部放下

 在缩放浏览器以后,表格数据超出页面,浏览器右侧出现滚动条

我们想让表格高度随着浏览器视口变换,不要浏览器的滚动条,而是让滚动条出现在表格里

 那么需要给表格加上最大高度属性,然后使用useResizeObserver来设置该属性的值

useResizeObserver(el, entries => {  //el是当前表格元素
  // 每改变一次视口,就获取一次表格的高度
  const { height } = entries[0].contentRect;
  // maxHeight是表格高度的最大值
  maxHeight.value = height - 20;  //该处20不是固定值,控制变化快慢,值越大变化的越快,可自己设值
});

解释一下这段代码

首先要清楚

  1. 表格是有一个默认的height值的,当height值 > max-height值时,max-height值才会生效,比如现在表格高度为50,但是我最大值设置为60,那么此时表格高度 = height = 50
  2. 我们表格布局给的是flex布局,flex会让子元素缩小到不能缩小为止,而我们的表格高度是动态可变的,所以拖动窗口时flex布局计算的高度也是动态的(让表格占满剩余高度)
  3. 视口变化(自己总结的,有错误的话欢迎指正)
  • 当手动拖拽或点击缩小按钮时,是一个连续的变化( 不是1和0,而是类似 1 --> 0),所以flex也不能直接计算出最终值,是根据视口变化来一点点变化的(变化期间,height值一直在变)
  • 当点击窗口放大按钮,视口直接跳到最大值,对应的flex可以直接得到最大的height值

const { height } = entries[0].contentRect;

这行代码是每改变一次视口,就获取一次表格

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值