页面表格高度自适应

前言

  • 现在后端管理系统主页面基本都是由三部分组成
    • 查询条件,高度不固定,可能有的页面查询条件多,有的少
    • 表格,高度不固定,占据页面剩余高度
    • 分页,高度固定
  • 这三部分加起来肯定是占满全屏的,那么我们可以结合flex布局,来实现。

代码及效果

app.vue

  • 相当于页面首页
<template><div id="app"><!-- 假设为页头内容,导航等...--><div class="routers"><router-link :to="item.path" v-for="item in routerLinks" :key="item.name">{{ item.name }}</router-link></div><!-- 内容区域 --><div class="content"><router-view /></div></div>
</template>
<script>
export default {data() {return {routerLinks: [],};},created() {this.handleRouterLink();},methods: {handleRouterLink() {// 获取所有路由配置this.routerLinks = this.$router.getRoutes();},},
};
</script><style lang="scss" scoped>
#app {height: 100vh;display: flex;flex-direction: column;
}
.routers {display: flex;justify-content: space-around;
}
/* 确定内容高度,好让业务组件的 height:100%生效 */
.content {flex: 1;
}
</style>

test.vue

  • 某业务表格组件
<!-- 表格高度自适应 -->
<template><div class="wrapper"><!-- 查询条件 --><div class="searchView"><div class="formItem" v-for="(item, index) in formNum" :key="index"></div></div><!-- 表格 --><div class="tableView" :key="tableKey"><el-table :data="tableData" ref="myTable" style="width: 100%" :height="tableHeight"><el-table-column prop="date" label="日期" width="180"> </el-table-column><el-table-column prop="name" label="姓名" width="180"> </el-table-column><el-table-column prop="address" label="地址"> </el-table-column></el-table></div><!-- 分页 --><div class="pageView"><el-pagination:pager-count="5"@size-change="handleSizeChange"@current-change="handleCurrentChange":current-page.sync="currentPage2":page-sizes="[100, 200, 300, 400]":page-size="100"layout="sizes, prev, pager, next":total="1000"></el-pagination></div></div>
</template>
<script>
export default {data() {return {// 表格key,当表格height变化时,el-table无法重新渲染,只能刷新key,强制渲染表格组件tableKey: 0,// 当前页数currentPage2: 1,// 查询条件数量formNum: 4,// 表格高度tableHeight: 500,// 表格数据tableData: [{date: '2016-05-02',name: '王小虎',address: '上海市普陀区金沙江路 1518 弄',},{date: '2016-05-04',name: '王小虎',address: '上海市普陀区金沙江路 1517 弄',},{date: '2016-05-01',name: '王小虎',address: '上海市普陀区金沙江路 1519 弄',},{date: '2016-05-03',name: '王小虎',address: '上海市普陀区金沙江路 1516 弄',},],};},async mounted() {this.handleTableHeight();// 当浏览器大小修改时,同时动态修改表格高度window.onresize = this.getDebounce(this.handleTableHeight, 500);},methods: {// 处理表格高度修改事件async handleTableHeight() {this.tableHeight = 0;await this.$nextTick();const tableView = document.querySelector('.tableView');this.tableHeight = tableView.clientHeight;console.log('tableHeight', this.tableHeight);this.tableKey++;},handleSizeChange(val) {console.log(`每页 ${val}`);},handleCurrentChange(val) {console.log(`当前页: ${val}`);},// 生成一个debounce函数,避免事件频繁除法getDebounce(func, delay) {let timer = null;return function (...args) {if (timer) {clearTimeout(timer);}timer = setTimeout(() => {func.apply(this, args);}, delay);};},},
};
</script>
<style lang="scss" scoped>
/* 以下样式皆可写到全局文件中,每个页面布局基本一致 */
.wrapper {display: flex;flex-direction: column;height: 100%;.searchView {display: flex;flex-wrap: wrap;gap: 10px 20px;.formItem {width: 230px;height: 30px;border: 1px solid #000;}}.tableView {flex: 1;}
}
</style>

效果

在这里插入图片描述

思路

  • 首先整个内容主页面.wrapper肯定是flex,并且纵向布局,高度100%。
  • 其次,我们要分别在查询条件、表格、分页外层套一层div,这样好进行样式管理。
  • 内容主页面肯定主要展示的是表格,那么我们就给表格外层的divtableView设置flex: 1;,占据剩余所有高度
  • 当页面加载完成的时候,由于是flex布局,表格的高度(剩余高度)就是wrapper的高度100% - searchView的高度 - pageView的高度
  • 然后我们在mounted钩子函数中,获取.tableViewdiv的clientHeight高度,这个值,就能作为表格的高度了。
  • 最后我们把这个高度值赋值给表格el-table的height属性,并且刷新key,强制表格重新渲染以达到效果。
  • 最最后,我们给window.onresize绑定了事件,并且优化了使用防抖,当浏览器大小修改的时候,页面也会动态自适应高度。

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

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

相关文章

ES6 generator Symbol yield

Symbol 独一无二的值 const s1 Symbol(a)const s2 Symbol(a)console.log(s1 s2) // falseconsole.log(typeof s1) // symbollet o {a: 90,}let symbol Symbol()o[symbol] 100console.log(o)//{a: 90, Symbol(): 100} 普通函数一旦执行 函数体从上往下依次执行 functio…

Python高级数据结构——图论算法(Graph Algorithms)

Python中的图论算法&#xff08;Graph Algorithms&#xff09;&#xff1a;高级数据结构解析 图是一种由节点&#xff08;顶点&#xff09;和边组成的数据结构&#xff0c;用于表示不同元素之间的关系。图论算法旨在解决与图相关的问题&#xff0c;例如路径查找、最短路径、最…

零基础上手,秒识别检测,IDEA研究院发布全新T-Rex模型

目标检测作为当前计算机视觉落地的热点技术之一&#xff0c;已被广泛应用于自动驾驶、智慧园区、工业检测和卫星遥感等场景。开发者在研究相关目标检测技术时&#xff0c;通常需熟练掌握图像目标检测框架&#xff0c;如通用目标检测框架 YOLO 系列&#xff0c;旋转目标检测框架…

python-绘图(主次坐标轴)

-- coding: utf-8 -- “”" Spyder Editor This is a temporary script file. “”" import pandas as pd import numpy as np import matplotlib.pyplot as plt data1pd.ExcelFile(r"D:\ZXL工作文件\6.15\6.16汇报内容1.xlsx")raw_datapd.read_excel(d…

『Nginx安全访问控制』利用Nginx实现账号密码认证登录的最佳实践

&#x1f4e3;读完这篇文章里你能收获到 如何创建用户账号和密码文件&#xff0c;并生成加密密码配置Nginx的认证模块&#xff0c;实现基于账号密码的登录验证 文章目录 一、创建账号密码文件1. 安装htpasswd工具1.1 CentOS1.2 Ubuntu 二、配置Nginx三、重启Nginx 在Web应用程…

SpringAMQP入门案例——发送消息

依赖 <!--SpringAMQP起步依赖--> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId> </dependency> yml配置文件 自行修改 spring:rabbitmq:host: 192.168.220.130 # …

CyclicBarrier实战应用——批量数据多线程协调异步处理(子线程执行事务回滚)

&#x1f60a; 作者&#xff1a; 一恍过去 &#x1f496; 主页&#xff1a; https://blog.csdn.net/zhuocailing3390 &#x1f38a; 社区&#xff1a; Java技术栈交流 &#x1f389; 主题&#xff1a; CountDownLatch实战应用——批量数据多线程协调异步处理(子线程执行事务…

【源码篇】基于SpringBoot+thymeleaf实现的大学生自习室座位预定系统

文章目录 系统介绍管理员学生 技术选型成果展示账号地址及其他说明 系统介绍 基于SpringBootthymeleaf实现的大学生自习室座位预定系统是为座位管理打造的一款在线管理平台&#xff0c;它可以实时完成信息处理&#xff0c;使其系统化和规范化。 系统功能说明 管理员 1、用户…

误用STM32串口发送标志位 “USART_FLAG_TXE” “USART_FLAG_TC”造成的BUG

当你使用串口发送数据时是否出现过这样的情况&#xff1a; 1.发送时第一个字节丢失。 2.发送时出现莫名的字节丢失。 3.各种情况字节丢失。 1.先了解一下串口发送的流程图&#xff08;手动描绘&#xff09;&#xff1a; 可以假想USART_FLAG_TXE是用于检测"弹仓"&…

【Rust日报】2023-11-30 Rust 异步编程中的困境:针对固定问题的探讨

Rust 临时生存期和super let 这篇文章讨论了 Rust 语言中临时变量的生存期问题以及一个新的语言想法——super let。作者首先介绍了临时变量的生存期规则&#xff0c;并探讨了临时生存期扩展的几种应用场景。然后&#xff0c;作者提出了super let的概念&#xff0c;旨在提供更多…

【STM32F103】GPIO通用输入输出口

GPIO 简介 GPIO&#xff08;General Purpose Input Output&#xff09;通用输入输出口是微控制器&#xff08;MCU&#xff09;必备的片上外设&#xff0c;可以实现微控制器与外部设备的数字交换。 STM32F103系列的芯片最多可以提供112个多功能双向IO引脚&#xff0c;但是显然…

架构师要懂的:一个新系统的服务器配置怎么计算,要多少资源

一. 私有云、公有云、混合云的区别 回答&#xff1a; 1.价格更贵 2.在企业内部使用 3.个性化定制&#xff0c;将IT硬件资源通过虚拟化的形式提供给企业内使用 私有云指由企业或组织自行搭建的云平台&#xff0c;只对内部人员可用&#xff0c;数据和应用程序都在企业或组织内…

机器学习-回归问题(Regression)

前言 与KNN分类任务预测的输出为离散型不同. 在机器学习中&#xff0c;回归任务是用于预测连续数值型变量的任务。回归任务在很多领域都有着广泛的应用. 回归问题求解 在一个回归问题中&#xff0c;很显然模型选择和好坏会直接关系到将来预测结果的接近程度&#xff0c;举个…

规则引擎专题---2、开源规则引擎对比

开源规则引擎 开源的规则引擎整体分为下面几类&#xff1a; 通过界面配置的成熟规则引擎&#xff0c;这种规则引擎相对来说就比较重&#xff0c;但功能全&#xff0c;比较出名的有:drools, urule。 基于jvm脚本语言&#xff0c;互联网公司会觉得drools太重了&#xff0c;然后…

常见的AI安全风险(数据投毒、后门攻击、对抗样本攻击、模型窃取攻击等)

文章目录 数据投毒&#xff08;Data Poisoning&#xff09;后门攻击&#xff08;Backdoor Attacks&#xff09;对抗样本攻击&#xff08;Adversarial Examples&#xff09;模型窃取攻击&#xff08;Model Extraction Attacks&#xff09;参考资料 数据投毒&#xff08;Data Poi…

GEE:不同方向的线性检测算子

作者:CSDN @ _养乐多_ 本文将介绍在 Google Earth Engine(GEE)平台上,使用不同方向的线性检测算子进行卷积操作的代码框架、核心函数和多种卷积核,比如 E-W、NE-SW、N-S、NW-SE 方向检测算子等。 结果如下图所示, 文章目录 一、定向检测算子二、完整代码三、代码链接一…

ubuntu上创建服务启动python脚本

场景 最近在使用ubuntu服务器部署MySQL和同步数据&#xff0c;同步数据使用的是python&#xff0c;但是我不能直接操作服务器&#xff0c;只能通过Xshell远程访问服务器&#xff0c;但是启动python脚本的时候如果关掉xshell会停止Python脚本&#xff0c;所以如果要让python脚本…

伪类,伪元素有什么,区别是什么

在CSS中&#xff0c;伪类&#xff08;pseudo-classes&#xff09;和伪元素&#xff08;pseudo-elements&#xff09;是用来选择文档中不同状态或特定部分的技术。它们的作用是为了能够更精确地选择文档中的某些部分&#xff0c;以便对其应用样式或效果。 伪类&#xff08;pseu…

JAVA代码优化:CommandLineRunner(项目启动之前,预先加载数据)

CommandLineRunner接口是Spring Boot框架中的一个接口&#xff0c;用于在应用程序启动后执行一些特定的代码逻辑。它是一个函数式接口&#xff0c;只包含一个run方法&#xff0c;该方法在应用程序启动后被自动调用。可以帮助我们在应用程序启动后自动执行一些代码逻辑&#xff…

php获取过去一段的时间范围

在 PHP 中获取过去一周的时间&#xff0c;你可以使用 DateTime 和 DateInterval 类。这里是一个示例代码&#xff0c;展示如何获取从今天起算的过去一周&#xff08;7天&#xff09;的日期&#xff1a; // 当前日期 $today new DateTime();// 设置日期为一周前 $oneWeekAgo …