Ant Design Vue Table 表格内容高度自适应+固定表头踩坑

前言

对于非专业前端开发者来使用 Ant Design UI 组件来开发企业级后台管理系统来说是非常不错的选择,但这并不意味着我们能够用好这个框架,因为 UI 交互上和有许多细节上的问题对于非专业前端来说并不容易解决,最近在使用 Table 组件时就遇到一个小坑,特此记录一下解决的方法

功能

场景:固定表头 + 表格内容高度自适应

在日常开发中表格是我们使用的组件之一,因为服务端的每一张数据表都有可能要在前端的 Table 表格中做展示,如果表的数据比较多,我们基本都会用分页做展示并且通常会提供几个不同的分页条数选择,比如【20,50,100】,在选择100每页的时候,我们基本都要滚动下拉查看数据,这个时候如果表头不固定看数据就比较难受,所以在大数据量大表格中基本都需要提供固定表头列的功能来增强用户体验

实现

我们看下 Ant Design Vue 官网提供的例子:

<template><a-table sticky :scroll="{ x: 1500 }":columns="columns" :data-source="data" ></a-table>
</template>

注意:为了使用滚动表格,每个 columns 的列宽都要指定,避免自适应的时候列伸缩导致错位堆叠

上面的用法看起来非常简单,但其实是有问题的,因为 scroll 里面的 x 值是写死的,这样会导致表格并不能自适应伸缩,我们来看下改进的方案:

<template><a-table sticky :scroll="{x:'100%', y:'calc(100vh-250px)'}":columns="columns" :data-source="data" ></a-table>
</template>

解释一下:

x 横轴我们使用了宽度为 100% 来根据列宽实际宽度来自适应伸缩

y 纵轴我们使用了(动态计算浏览器可视高度 - 250px)以此来达到 y 轴的自适应伸缩,用 250px 是因为我们表格的位置坐标,通常距离顶部和底部通常都会留一些距离出来,这个可根据实际情况做调整。

上面的方案看起来没问题,但在实际测试时,发现在部分场景下会导致底部出现重复的x 轴滚动条,图示如下,底部有两个滚动条同时出现:

复现步骤:

1,先最大化浏览器窗口,然后表格滚动条向下滚动一部分

2,接着缩回原样,此时一切都正常

3,然后将滚动条滚动到表格底部,这个时候底部就会出现两个x轴滚动条

这个其实影响到是不大,只会在上面的步骤中触发,用浏览器 debug 了下 and design原生的 ant-table-sticky-scroll的样式如下:

发现其 bottom 属性的设置失效了,具体原因可能是被父包裹组件中属性覆盖了。

解决

知道了上述的原因后,解决也其实比较简单了,放弃原始表格上 sticky 属性的设置,改为我们自定使用 vue 的 deep 样式穿透来覆盖解决即可,最终的代码如下:

<template><a-table :scroll="{x:'100%', y:'calc(100vh-250px)'}":columns="columns" :data-source="data" ></a-table>
</template><style scoped>:deep(.ant-table-wrapper .ant-table-header){position: sticky;top: 0;z-index: 3;}:deep(.ant-table-wrapper .ant-table-sticky-scroll){position: sticky;bottom: 0;z-index: 3;}</style>

总结

可以看到问题的解决步骤,其实还是有一定难度的,不仅需要知道前端的 html+css+js的基础知识和 chrome 浏览器的 debug功能,还需要对使用的vue框架有所了解才行,虽然解决过程比较曲折,但在解决之后我们就会有种 “山重水复疑无路,柳暗花明又一村”的豁然开朗的快感

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

多路转接之epoll

本篇博客介绍&#xff1a; 多路转接之epoll 多路转接之epoll 初识epollepoll相关系统调用epoll的工作原理epoll服务器编写成员变量构造函数 循环函数HandlerEvent函数epoll的优缺点 我们学习epoll分为四部分 快速理解部分概念 快速的看一下部分接口讲解epoll的工作原理手写epo…

软件测试之用例篇(万能公式、具体方法)

目录 1. 概念 2. 万能公式 3.具体设计测试用例的方法 &#xff08;1&#xff09;等价类 &#xff08;2&#xff09;边界值 &#xff08;3&#xff09;判定表(因果图) &#xff08;4&#xff09;场景设计法 &#xff08;5&#xff09;正交法 如何使用 allparis 生成正交…

洞见UI自动化测试

随着软件行业的不断发展&#xff0c;建立一个完善的自动化测试体系变得至关重要。自动化测试包括三个方面&#xff1a;UI前端界面&#xff0c;Service服务契约和Unit底层单元如下图&#xff1a; 越是底层的测试&#xff0c;运行速度越快&#xff0c;时间开销越少&#xff0c;金…

【零参考GAN:Pansharpening】

ZeRGAN: Zero-Reference GAN for Fusion of Multispectral and Panchromatic Images &#xff08;用于多光谱和全色图像融合的零参考GAN&#xff09; 本文提出了一种融合低空间分辨率多光谱(LR MS)和高空间分辨率全色(PAN)图像的新的全色锐化方法–零参考生成对抗网络(ZeRGAN…

(一)、ts 基础类型 及class类举例字符雨和实现vue的挂在#app

文章目录 前言环境执行依赖node.js一、基础数据类型二、任意类型三、接口和对象类型四、 数组类型五、函数重载六、类型断言断言联合类型交叉类型 七、内置对象-Promise基础对象DOM和BOMPromise ts化代码雨案例 八、Class类(派生类和抽象类)派生类 abstract抽象类 classClass简…

自定义SpringBoot启动图标

在SpringBoot项目的resources目录下创建banner.txt文件 在https://www.bootschool.net/网站上复制Ascll艺术字&#xff08;图&#xff09;粘贴到banner.txt中保存。 启动项目就会加载 可以修改颜色&#xff0c;和版本号 ${application.version} 输出版本 ${spring-boot.v…

「软件设计师」 2023年上半年上午真题解析

「软件设计师」 2023年上半年上午真题解析 提示&#xff1a;系列被面试官问的问题&#xff0c;我自己当时不会&#xff0c;所以下来自己复盘一下&#xff0c;认真学习和总结&#xff0c;以应对未来更多的可能性 关于互联网大厂的笔试面试&#xff0c;都是需要细心准备的 &…

8. 一文快速学懂常用工具——Linux命令(上)

本章讲解知识点 引言 指令学习 本专栏适合于软件开发刚入职的学生或人士&#xff0c;有一定的编程基础&#xff0c;帮助大家快速掌握工作中必会的工具和指令。本专栏针对面试题答案进行了优化&#xff0c;尽量做到好记、言简意赅。如专栏内容有错漏&#xff0c;欢迎在评论区指…

Debug技巧-不启用前端访问后端

在日常开发中&#xff0c;我们经常会遇到各种问题需要调试&#xff0c;前后端都启动需要耗费一定的时间和内存&#xff0c;方便起见&#xff0c;可以直接用抓包数据访问后端&#xff0c;这里我们需要用到Postman或者ApiFox 抓包数据 在系统前台触发后端请求&#xff0c;在控制…

MyBatis入门

MyBatis是一款优秀的持久层框架&#xff0c;用于简化JDBC开发 持久层&#xff1a; 负责将数据保存到数据库的那一层代码 我们会将操作数据库的Java代码作为持久层&#xff0c;而MyBatis就是对jdbc代码进行了封装。 JavaEE三层架构&#xff1a;表现层、业务层、持久层 框架&…

mysql之索引

一、索引的概念 1、索引&#xff1a;是一个排序的列表&#xff0c;列表当中存储的是索引的值和包含之值的数据所在行的物理地址 2、主要作用&#xff1a;快速查找&#xff0c;加快查询速度 3、索引的缺点&#xff1a;索引也占用额外的磁盘 &#xff08;1&#xff09;innodb…

Stable Diffusion WebUI扩展openpose-editor如何使用

先上地址: GitHub - fkunn1326/openpose-editor: Openpose Editor for AUTOMATIC1111s stable-diffusion-webuiOpenpose Editor for AUTOMATIC1111s stable-diffusion-webui - GitHub - fkunn1326/openpose-editor: Openpose Editor for AUTOMATIC1111s stable-diffusion-webu…

[SpringCloud | Linux] CentOS7 部署 SpringCloud 微服务

目录 一、环境准备 1、工具准备 2、虚拟机环境 3、Docker 环境 二、项目准备 1、配置各个模块&#xff08;微服务&#xff09;的 Dockerfile 2、配置 docker-compose.yml 文件 3、Maven 打包 4、文件整合并传输 三、微服务部署 1、部署至 Docker 2、访问微服务 四…

nacos在linux中的安装、集群的配置、mysql生产配置

1.下载和安装 官方下载地址&#xff1a;https://github.com/alibaba/nacos/releases&#xff0c;根据自己需要的本版去下载就行 下载的是 .tar.gz 后缀的文件是linux版本的 使用tar命令解压&#xff0c;完成之后是一个nacos的文件夹 和windows下的文件夹目录是一样的 要启…

MICCAI2023论文多模态论文速读-1

文章目录 1.Attentive Deep Canonical Correlation Analysis for Diagnosing Alzheimer’s Disease Using Multimodal Imaging Genetics2.Bidirectional Mapping with Contrastive Learning on Multimodal Neuroimaging Data3.CoLa-Diff: Conditional Latent Diffusion Model f…

【算法练习Day35】01背包问题分割等和子集

​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;练题 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 文章目录 01背包问题分割等和子集总结…

Proteus仿真--基于51单片机的按键控制LED仿真(仿真文件+程序)

本文主要介绍基于51单片机的按键控制LED仿真&#xff08;完整仿真源文件及代码见文末链接&#xff09; 本仿真文件主要涉及4个按键&#xff0c;其中&#xff1a; K1按键的逻辑是——逐个点亮 K2按键的逻辑是——上四个点亮 K3按键的逻辑是——下四个点亮 K4按键的逻辑是——关…

HarmonyOS鸿蒙原生应用开发设计- 元服务(原子化服务)图标

HarmonyOS设计文档中&#xff0c;为大家提供了独特的元服务图标&#xff0c;开发者可以根据需要直接引用。 开发者直接使用官方提供的元服务图标内容&#xff0c;既可以符合HarmonyOS原生应用的开发上架运营规范&#xff0c;又可以防止使用别人的元服务图标侵权意外情况等&…

Http代理与socks5代理有何区别?如何选择?(一)

了解SOCKS和HTTP代理之间的区别对于优化您的在线活动至关重要&#xff0c;无论您是技术娴熟的个人、现代互联网用户还是企业所有者。在使用代理IP时&#xff0c;您需要先了解这两种协议之间的不同。 一、了解HTTP代理 HTTP&#xff08;超文本传输协议&#xff09;代理专门设计…

【Java 进阶篇】Java中的响应输出字节数据

在Java Web应用程序开发中&#xff0c;处理响应是一个常见的任务。有时&#xff0c;您可能需要向客户端发送字节数据&#xff0c;而不仅仅是文本或HTML内容。这可以用于传输各种内容&#xff0c;如图像、文件、视频等。本文将详细介绍如何在Java中使用Response对象输出字节数据…