若依框架前端表格自适应

news/2024/10/6 1:49:23/文章来源:https://www.cnblogs.com/Vrapile/p/18283104

1. 背景

问题描述:

如图,若依前端表格高度都是固定写死的,因此会出现底部空一部分,现在希望自适应表格,使得表格一屏展示,且在隐藏查询条件等操作,导致屏幕大小变化时,表格可以同步自适应。

 

问题现状:很多时候,前端开发都是尽可能本机调整到刚刚好的高度,但不同用户不同电脑分辨率和浏览器缩放率,都使得整个页面不能一屏刚好展示。

 

2.解决方案

解决思路:

  1. 通过display布局,将表格的外层元素设置为自适应大小,通过计算外层元素的高度,动态给el-table组件赋值高度
  2. 通过监听页面resize事件,当页面变化时,自动重新计算表格高度

 

具体改动:

  1. 因为自适应场景较多,先封装个自适应子组件OnResize.vue
 1 <template>
 2   <div></div>
 3 </template>
 4 <script setup name="OnResize">
 5 const { proxy } = getCurrentInstance();
 6 const emits = defineEmits(["update:tableHeight"]);
 7 
 8 const props = defineProps({
 9   tableHeight: {type:Number, default: 475},
10   biaogeRef: {type: String, default: "biaoge"}
11 })
12 
13 onMounted(() => {
14   onResize();
15   window.addEventListener('resize', onResize)
16 })
17 onBeforeUnmount(() => {
18   window.removeEventListener('resize', onResize)
19 })
20 
21 defineExpose({
22   onResize
23 })
24 
25 function calcHeight() {
26   if(proxy.$parent.$refs[props.biaogeRef]){
27     nextTick(() => {
28     const rect = proxy.$parent.$refs[props.biaogeRef].getBoundingClientRect();
29     if(rect.height >= 1){
30       emits("update:tableHeight", rect.height-1);
31     }
32   })
33   }
34 }
35 
36 function onResize(time=1000) {
37   setTimeout(() => {
38     calcHeight();
39   }, time)
40 }
41 </script>

其中:

  入参为表格高度tableHeight和外层元素biaogeRef名字(页面有多个表格时,可以多次引用此组件)

  calcHeight函数,通过外层元素biaogeRef名字的高度,得到表格自适应后的高度,并通讯到父组件

  监听resize事件实现屏幕变化时,能跟随自适应变化

  提供父组件可调用的自适应方法onResize


全局引用OnResize组件

 

 

 

将框架 \src\layout\index.vue 的 main-container 样式设置为display布局

.main-container {display: flex;flex-direction: column;
}


具体页面,将最外层的div设置为撑满全屏,同时内部样式也设置为display布局,引用onResize组件,代码结构一览

 

  

说明:一般页面除了表格,其它元素的高度都是固定的,只需将其中表格的外层高度设置为自动即可。

注:这里用两层div包裹table,第一层做自适应最大,第二层绝对定位填充。

       

关键样式代码

.nine-container001 {padding: 10px 8px 5px 8px;height: 100%;flex: auto;display: flex;flex-direction: column;
}/** 表格 */
.nine-biaoge-001{flex: 1;position: relative;width: 100%;.biaoge-inner{position: absolute;top: 0;bottom: 0;width: 100%;}
}

 

其它关键js代码

<script setup name="operlog">// 定义表高度
const tableHeight = ref(450);
……
/** 显示隐藏查询条件 */
function handleQueryShow() {……queryShow.value = !queryShow.value;proxy.$refs.resizeRef.onResize();
}
/** 重置按钮操作 */
function handleRefresh() {……proxy.$refs.resizeRef.onResize();
}
</script>

 

最终效果:

        实现了一屏展示表格,隐藏查询条件,打开console控制台,放大浏览器,都能实现自动立即自适应表格

 

 

3. 总结

  display布局是目前最流行的布局,熟练掌握,用于做弹窗自适应,做大屏,以及各种复杂布局,轻轻松松。

  OnResize组件不仅仅可以用于表格,对于其它需要动态高度的元素,一样通用。

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

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

相关文章

CentOS 7 升级 OpenSSH 9.8p1

背景 OpenSSH 官方发布安全通告,披露CVE-2024-6387 OpenSSH Server远程代码执行漏洞。 环境操作系统 内核 openssh 版本 openssl 版本7.8.2003 3.10.0-1127 7.4p1 1.0.2k-fips安装编译软件和下载 OpenSSH9.8p1 软件包 mkdir -p /data/software cd /data/software/yum install…

ComfyUI基础篇:为什么要学 ComfyUI?

前言:在AI生成图像领域,有许多产品,例如 Midjourney 和 Stability AI 等。为什么要学习 ComfyUI 呢?我斗胆带大家一起分析一下。目录1.Midjourney VS Stable Diffusion2.SD Web UI VS ComfyUI3.总结Midjourney VS Stable Diffusion在回答这个问题之前,我觉得有必要介绍下目…

功能齐全!一套基于AGPL3开源协议开源的智慧物业社区系统!!

ejyy —— 一套开源的智慧物业解决方案。实现了微信公众号、小程序、PC、H5、智能硬件多端打通,旨在提升物业公司效率、规范物业服务流程、提升物业服务满意度、加强小区智慧化建设、便捷业主服务。大家好,我是 Java陈序员。 今天,给大家介绍一套开源的物业社区管理系统,涵…

关于搭建可商用AI平台的小感想

AI时代已经到来,建立自己的AI平台不仅能提升技能,还能带来更多职业和商业机会。我们的开源AI平台解决了技术难题,并提供全套商业化解决方案,让你专注于业务拓展。想学习从0-1搭建AI平台的朋友,欢迎加入我们的开发者交流群,一起交流学习。前言 AI时代已经到来,从智能客服…

QChartView显示实时更新的温度曲线图(二)

目录参考图说明1. 项目结构2. TempChartView.pro3. main.cpp4. TemperatureSeries.qml5. main.qml详细说明 参考图说明Qt Charts 提供了一系列使用图表功能的简单方法。它使用Qt Graphics View Framework 图形视图框架,因此可以很容易集成到用户界面。可以使用Qt Charts作为QW…

程序人生日记20240704|工作零食:米饭+十分米莲藕汁+饼干(减脂记录)

程序员的工作饮食减脂记录打卡 餐别:早餐 零食详情:(同事给的不算统计内) 零食名称:十分米莲藕汁配饼干 其他选择:米饭+海盐饼干。 大致热量估算: 莲藕汁约50卡,低脂全麦饼干2片约80卡,米饭约500卡,总计约630卡。 初始数据: 体重:90公斤 目标:80公斤 完成情况:完…

开发一个题库系统App和小程序的心得

开发一个题库系统App和小程序的心得序言 对于一名开发者来说,独自开发一款小程序与App,也许总会有一些疑问:1. 需要掌握哪些技术? 答:java、vue、及常规Linux命令2. 需要多少成本? 答:服务器购买,云服务器新人50多三年; 域名购买,10块的域名够用,后续每年30左右的续…

SFE人才需要具备哪些能力

SFE(销售队伍效力)人才在企业中扮演着至关重要的角色,他们需要具备一系列的能力来确保销售队伍的高效运作和业绩提升。关于SFE的角色和能力,可以从业务理解、数据洞察、向上管理以及效率提升等几个方面来通俗地解释。01 懂业务 SFE人才首先需要深入了解公司的业务,像医药企…

doris 数据库与mysql的不同之处

1.doris与mysqldoris可以使用mysql驱动进行连接,也支持mysql的部分语法。 2.具体分析清空表数据 在mysql中,清空表数据有两种方式: 一种是delete from table_name,一种是truncate table table_name。 而在doris中,清空表数据只能使用truncate table table_name。delete fr…

Kylin V10SP2安装openGauss5.0.2企业版

一、本地系统环境 [root@localhost ~]# cat /etc/os-release NAME="Kylin Linux Advanced Server" VERSION="V10 (Sword)" ID="kylin" VERSION_ID="V10" PRETTY_NAME="Kylin Linux Advanced Server V10 (Sword)" ANSI_COLO…

VMware ESXi 8.0U3 macOS Unlocker OEM BIOS Huawei (华为) FusionServer 定制版

VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS Huawei (华为) FusionServer 定制版VMware ESXi 8.0U3 macOS Unlocker & OEM BIOS Huawei (华为) FusionServer 定制版 ESXi 8.0U3 标准版,Dell (戴尔)、HPE (慧与)、Lenovo (联想)、Inspur (浪潮)、Cisco (思科)、Hitac…

常见数据摆渡系统全面比较,哪一款才是众望所归?

数据摆渡是一种利用物理隔离或特定设备,在不相连的计算机或系统之间传输数据的方法。其原理主要基于中间层的数据处理和转换,确保数据在不同系统之间能够进行有效的交换和共享。对于企业而言,数据摆渡场景主要发生在企业隔离网间。基于网络安全管理需要,企业采用防火墙等网…