首页 > 其他分享 >若依框架前端表格自适应

若依框架前端表格自适应

时间:2024-07-04 10:31:00浏览次数:20  
标签:适应 表格 flex 前端 高度 onResize 若依 组件

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组件不仅仅可以用于表格,对于其它需要动态高度的元素,一样通用。

标签:适应,表格,flex,前端,高度,onResize,若依,组件
From: https://www.cnblogs.com/Vrapile/p/18283104

相关文章

  • 前端面试题(CSS篇一)
    一、介绍一下标准的CSS的盒子模型?低版本IE的盒子模型有什么不同的?相关知识点:(1)有两种盒模型:IE盒模型(border-box)、W3C标准盒模型(content-box)(2)盒模型:分为内容(content)、填充(padding)、边界(margin)、边框(border)四个部分IE盒模型和W3C标准盒模型的区别:(1)W3C标准盒模型......
  • Vuex 核心揭秘:打造高效前端状态库
    引言Vue.js是一个流行的JavaScript框架,以其简洁的设计和易用的特性赢得了开发者的青睐。它允许开发者通过声明式的方式编写前端代码,从而提高开发效率。Vuex是Vue.js的官方状态管理库,它为Vue应用提供了一个中心化存储,使得所有组件都能够访问和更新共享状态。这对于大......
  • web前端应用性能指标测量工具有哪些?
    接上一篇介绍前端性能指标的内容,本文主要总结下一般使用的性能测量工具。1、可以借助Gooogle开源的web-vitals库来测量一些性能指标:import{onCLS,onINP,onLCP,onFCP,onFID,onTTFB}from'web-vitals';onCLS(console.log);onINP(console.log);onLCP(console.log);o......
  • web前端应用性能指标优化方案有哪些?
    接上一篇介绍前端性能指标的内容,本文主要总结下一般使用的指标优化方案加载相关:FCP优化:降低服务器响应时间:确保服务器能迅速响应请求,这样浏览器就能更快地开始处理并渲染页面内容。可以通过优化服务端代码、改善静态资源的提供方式(如将图片部署到CDN)来实现。延迟加载非关......
  • web前端应用应该关注哪些性能指标?
    作为一个有经验的前端开发工程师来说,关注性能是必不可少的一项日常工作,那么应该重点关注一些什么样的性能指标呢?其实主要还是从用户体验的角度来看,一般我们会从页面加载相关、交互相关方面入手。原文:前端性能指标,一网打尽FCP:首次内容绘制LCP:最大内容绘制TTFB:首字节时间TBT:总......
  • 前端如何优雅的添加水印及去除水印
    ......
  • pdf的表格怎么转换成word?
    Adobe设计PDF文件格式的目的是支持跨平台、多媒体集成的信息出版和发布,特别是对网络信息发布的支持。为了实现这一目标,PDF具有许多其他电子文件格式无法比拟的优势。如今,越来越多的电子书籍、产品描述、公司通知、网络数据和电子邮件开始使用PDF格式文件。但是PDF却不能直接编辑,因......
  • 若依管理系统-免验证接口实现
    1修改配置文件1.1application.yml增加test:true开发取消验证#项目相关配置ruoyi:#名称name:RuoYi#版本version:3.8.7#版权年份copyrightYear:2024#文件路径示例(Windows配置D:/ruoyi/uploadPath,Linux配置/home/ruoyi/uploadPath)profile......
  • JAVA妇产科专科电子病历系统源码,前端框架:Vue,ElementUI
    JAVA妇产科专科电子病历系统源码,前端框架:Vue,ElementUI孕产妇健康管理信息管理系统是一种将孕产妇健康管理信息进行集中管理和存储的系统。通过建立该系统,有助于提高孕产妇健康管理的效率和质量,减少医疗事故发生的可能性,管理医疗资源,保证孕产妇得到及时、准确的医疗服务。该系......
  • 外挂级OCR神器:免费文档解析、表格识别、手写识别、古籍识别、PDF转Word
    TextInTools是一款免费的在线OCR工具,支持快速准确的文字和表格识别,手写、古籍识别,提供PDF转Markdown大模型辅助工具,同时支持PDF、WORD、EXCEL、JPG、PPT等各类格式文件的转化。 TextInTools特点免费:所有产品提供每日200页免费额度,覆盖日常使用需求。方......