antd table 表格滚动高度适配

news2025/4/23 2:13:02

文章の目录

  • 问题产生背景
  • 如何解决
  • 写在最后

问题产生背景

在开发一个后台管理系统,某一页面用到了table表格,产品的需求是:

  • table表格无论展示多少条数据,表头和分页信息要展示出来
    此时我们一定首先想到了table表格的 scroll 属性,然后问题是 :
  • scrollY一定是动态的才能适配不同的设备高度
    在这里插入图片描述

如何解决

在解决这个问题之前我们脑海里必须先有一个动态获取表格竖向滚动高度的公式:

  • scrollY = 窗口高度 — 表头底部到窗口顶的高度 — 分页高度
    如下图所示:
    在这里插入图片描述
    此后问题又来了:
  • 如何获取上图中的表头底到窗口定的距离呢?
    此时推荐一个 apigetBoundingClientRect(), 此api 可以动态获取元素相对视口的位置,详细用法见下MDN链接:
    getBoundingClientRect
    有了这个api问题便迎刃而解,代码如下所示:
/**
 * 获取第一个表格的可视化高度
 * @param {*} extraHeight 额外的高度(表格底部的内容高度 Number类型,默认为74) 
 * @param {*} id 当前页面中有多个table时需要制定table的id
 */
export function getTableScroll({ extraHeight, id }) {
  if (typeof extraHeight == "undefined") {
    //  默认底部分页64 + 边距10
    extraHeight = 74
  }
  let tHeader = null
  if (id) {
    tHeader = document.getElementById(id) ? document.getElementById(id).getElementsByClassName("ant-table-thead")[0] : null
  } else {
    tHeader = document.getElementsByClassName("ant-table-thead")[0]
  }
  //表格内容距离顶部的距离
  let tHeaderBottom = 0
  if (tHeader) {
    tHeaderBottom = tHeader.getBoundingClientRect().bottom
  }
  //窗体高度-表格内容顶部的高度-表格内容底部的高度
  // let height = document.body.clientHeight - tHeaderBottom - extraHeight
  let height = `calc(100vh - ${tHeaderBottom + extraHeight}px)`
  return height
}

具体项目中可以将以上函数封装成一个工具函数,在页面初始化时调动,即可调用函数动态获取 scrollY,代码如下所示:

const [scrollY, setScrollY] = useState("")
 //页面加载完成后才能获取到对应的元素及其位置
 useEffect(() => {
    setScrollY(getTableScroll())
  }, [])


<Table
            className="components-table-demo-nested"
            columns={columns}
            expandable={{ expandedRowRender }}
            dataSource={data}
            scroll={{y:scrollY}} 
/> 

写在最后

以上便是解决 antd table 表格滚动区域高度适配的方法,如果大家有更好的方法欢迎留言交流~~;

🥂(❁´◡`❁)您的点赞👍➕评论📝➕收藏⭐是作者创作的最大动力🤞

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26028.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【设计模式】原型模式

原型模式属于创建型模式&#xff0c;主要作用是利用一个原型对象的克隆方法&#xff0c;在保证性能的情况下创建多个重复的对象&#xff0c;本质就是通过克隆一个原有的对象来复制出一个新对象。 文章目录原型模式的介绍使用场景原型模式的实现类图实现方法第一步&#xff0c;编…

一文解决 Go 安装和常用环境变量的配置

一文解决 Go 安装和常用环境变量的配置下载链接Windows 操作系统下安装Linux 操作系统下安装安装多个 Go 版本常用环境变量的解释结尾耐心和持久胜过激烈和狂热。 下载链接 官网&#xff1a;https://golang.org/dl中国大陆的镜像站点&#xff1a;https://golang.google.cn/dl/…

跨境电商卖家只青睐亚马逊?其实你不知道,“备胎”早已选好!(Starday)

跨境电商平台作为一个新的国际贸易形态&#xff0c;打破传统贸易形态的方式&#xff0c;将互联网与外贸交易相结合&#xff0c;从而大大降低外贸的运营成本&#xff0c;因此在这两年逐渐燃爆电商行业&#xff0c;让许多行业的人趋之若鹜&#xff0c;从观察中我们可以发现&#…

线性插值方法

插值&#xff0c;通俗来说当在一个离散的事件中&#xff0c;想知道某一个位置确定的值时&#xff0c;就可以利用插值方式计算得到&#xff0c;即利用已知数据估计未知位置数值。插值的方式有很多&#xff0c;下面介绍几种常用的插值方式。 一、最近邻插值(Nearest Neighbour …

矩阵分析:特征值分解都在这里了

矩阵分析&#xff1a;特征值分解前置知识空间变换伸缩旋转对称矩阵对称矩阵对角化正交矩阵向量的基基变换不同基下的向量变换逆矩阵不同基下的空间变换内积的几何意义特征值、特征向量特征值分解代码前置知识 空间变换 伸缩 一个矩阵其实就是一个线性变换&#xff0c;因为一个…

借道元宇宙 一汽-大众揽巡打造沉浸式上市体验

11月18日&#xff0c;一汽-大众以元宇宙科技为载体&#xff0c;举行了行业首场元宇宙游戏形式的“巡梦之旅”线上虚拟发布会&#xff0c;宣布旗下“硬核大五座SUV”揽巡Tavendor正式上市。全新揽巡共提供330TSI 精英巡行版、330TSI 豪华巡逸版、380TSI 四驱R-Line 巡游版、380T…

代码库制作与使用

静态库 假定有以下目录结构&#xff0c;main.c 为src测试文件&#xff0c;所以要调用src目录下的四个文件。我们可以把src打包成一个静态库供main.c使用 tree 命令展示目录结构制作 1.先把目标代码编译生成.o文件 需要包含头文件&#xff0c;否则会报错&#xff0c;使用-I来…

dB family cheat sheet: dB, dBW, dBm, dBi, dBc, etc

目录 1. dB 2. dBi 3. dBW和dBm 4. dBc(Decibel relative to carrier power level) 5. dBuV(dB over 1 microvolt), dBmV(dB over 1 millivolt) 6. 功率、电压、匹配阻抗 7. dBFS 1. dB dB用于表示功率之间的对数比率&#xff0c;所以它没有单位&#xff0c;其定义为&am…

【2022.11最新】Python疫情数据采集 + 可视化展示

嗨害大家好鸭&#xff01;我是小熊猫 最近我又又又在家里居家办公了 闲来无事&#xff0c;用python采集一下 再做个可视化 康康现在疫情如何 源码、资料素材电子书点击这里 知识点: 1. 爬虫基本流程 2. requests 发送请求 3. re 正则表达式 4. json 结构化数据解析 5. pyech…

【深度学习】CycleGAN开源项目学习笔记 | 完整流程 | 报错总结 | pytorch

文章目录前言一、下载项目&#xff0c;文件结构观察二、数据集下载三、训练3.1、训练初体验3.2、命令行输入参数3.3、继续训练命令四、预测4.1、使用自己训练完的权重文件进行预测4.2、使用网上的预训练文件进行预测前言 你敢想象&#xff0c;就是这么一个简单的开源网站&…

南卡电容笔和绿联哪款更好用?性价比高的电容笔推荐

随着生活节奏逐渐加快&#xff0c;从而Apple Pencil的出现引来了不少热度&#xff0c;不过Apple Pencil由于价格昂贵&#xff0c;让不少用户望而止步。然而现在出现了平替电容笔&#xff0c;而且品牌众多&#xff0c;有很多百元左右的平替电容笔&#xff0c;性能和配置都做的不…

适合运动的耳机有哪些?六款相当不错的运动耳机分享

户外运动是现代青年最常见的一种生活方式&#xff0c;无论是在公交地铁上&#xff0c;还是晚上散步的公园里&#xff0c;都能看到很多人在运动&#xff0c;然而他们在做运动的时候都会佩戴上一款运动耳机&#xff0c;音乐能够让我们沉醉于运动中。也越来越多人会问&#xff0c;…

一款可以阻止网络钓鱼诈骗的解决方案?

“你继承了一笔财富。要转账&#xff0c;我需要你的银行账户凭证。” 你是否也遇见过此类的电话诈骗话术。 根据2022年数据泄露调查报告&#xff0c;25%的数据泄露涉及网络钓鱼。 这是怎么发生的&#xff1f;参与网络钓鱼的欺诈者一般都是心理方面的高手。他们知道如何营造紧…

蓄电池电压检测单元 电池监控模块 24路电池电压采样模块电源检测

24路巡检单元的主要功能是对串联蓄电池组的单电池电压进行实时在线巡回检测&#xff0c;并智能分析电池的使用状况&#xff0c;根据用户设置不同的上下限、平均偏差自动判断并输出告警。本电池巡检单元主要应用于发电厂、变电站或其它行业中的直流电源、UPS电源的蓄电池组的电压…

载紫杉醇D-α-生育酚聚乙二醇1000琥珀酸酯/纳米粒包裹紫杉醇的肝素纳米粒

下面整理了载紫杉醇D-α-生育酚聚乙二醇1000琥珀酸酯/纳米粒包裹紫杉醇的肝素纳米粒&#xff0c;一起看&#xff01; 包裹紫杉醇的肝素纳米粒制备方法&#xff1a; 以肝素为原料制备生物素化包裹紫杉醇的肝素纳米粒,动态光散射仪测定其粒径及电位,透射电镜观察其形态,紫外分光…

cuda 编程:矩阵运算讲解

本文主要介绍用CUDA实现矩阵运算(C A x B)的几个基本方法&#xff0c;帮助大家理解矩阵在GPU上面的运算与CPU上的有何异同&#xff0c;通过实践上手CUDA的优化计算&#xff0c;相比基础方法&#xff0c;能提速10倍以上。 本文内容涉及到CUDA矩阵1D运算,2D运算,共享内存,CUBLAS…

808. 分汤 : 挺有意思的 DP 题

题目描述 这是 LeetCode 上的 808. 分汤 &#xff0c;难度为 中等。 Tag : 「数学」、「动态规划」、「线性 DP」 有 A 和 B 两种类型 的汤。一开始每种类型的汤有 n 毫升。有四种分配操作&#xff1a; 提供 100ml 的 汤A 和 0ml 的 汤B 。提供 75ml 的 汤A 和 25ml 的 汤B…

还在用Python爬壁纸网站?不如来试试搜索引擎的图片库

前言 嗨嗨&#xff0c;又来给你们带来爬美女照片的文章了 今天就不去搞什么壁纸网站了&#xff0c;之前也发了蛮多了 今天搞点不一样的&#xff0c;来试试搜索引擎的图片库 话不多说&#xff0c;直接用Python来开发一下此处资源&#xff01; 开发环境 & 第三方模块 环…

k3s安装

文章目录1. 文件准备2. 安装3. 查看4. rancher接入官方文档https://docs.rancher.cn/docs/k3s/installation/airgap/_index/1. 文件准备 从&#xff1a; https://github.com/k3s-io/k3s/releases 下载如下两个文件 二进制文件: k3s 文件镜像包&#xff1a;k3s-airgap-images-…

route -n 路由详情

添加网段路由,想要只显示U route add -net 192.168.1.0 netmask 255.255.255.0 dev ens192 [rootht23 k8snode]# route -n Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 ens192 表示192.168.1.…