【Vue+ElementUI】el-table动态高度设置及表格内容错乱对不齐

本文主要是介绍【Vue+ElementUI】el-table动态高度设置及表格内容错乱对不齐,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在Vue中使用ElementUI的el-table标签会遇到以下问题

一、遇到页面切换时,表格内容错乱(对不齐):doLayout()

二、动态计算表格高度:getTableMaxHeight()

页面结构:搜索框+表格,通常会在表格内部进行滚动比较好看,这时候就需要计算并设置表格高度

<template><div class="app-container"><el-form :model="queryParams" ref="queryForm" size="small" :inline="true"><el-form-item label="名字" prop="name"><el-inputv-model="queryParams.name"placeholder="请输入名字"clearable@keyup.enter.native="handleQuery"/></el-form-item></el-form><el-table ref="tables" v-loading="loading" :data="list" :height="maxHeight"><el-table-column label="ID" align="center" prop="id" /><el-table-column label="名字" align="center" prop="name" /><el-table-column label="年龄" align="center" prop="age" /></el-table></div>
</template>
<script>
export default {data() {return {loading: true,list: [], // 表格数据maxHeight: null,queryParams: {}},created() {this.getList();},mounted() {// 监听窗口变化事件window.addEventListener("resize", this.resizeScreen);},// 页面销毁时移除监听事件beforeDestroy() {window.removeEventListener('resize', this.resizeScreen)},// 页面缓存重新进入页面时,在路由组件被激活时触发activated() {this.$nextTick(() => {this.$refs.tables.doLayout(); // 对表格重新布局(解决切换页面后列错乱)})},methods: {// 获取数据,设置表格高度getList() {this.loading = true;this.list = [{id: 1, name: '小红', age: 20},{id: 2, name: '小华', age: 20},{id: 3, name: '小东', age: 20},{id: 4, name: '小刘', age: 20},];this.resizeScreen(); // 获取数据后,计算高度并重新渲染表格this.loading = false;},// 窗口变化时,表格高度跟着动态变化resizeScreen() {this.$nextTick(() => {this.maxHeight = this.getTableMaxHeight(); // 计算高度this.$refs.tables.doLayout(); // 重新渲染表格})},// 动态计算并返回:表格最大高度 computeHeightgetTableMaxHeight() {if (!this.list.length) return // 如果没有数据,直接退出if (!this.$refs.tables) return;// 表头高度var headerHeight = document.getElementsByClassName('el-table__header')[0].offsetHeight;// 表内高度var bodyHeight = document.getElementsByClassName('el-table__body')[0].offsetHeight;// 默认表格高度 = 表头 + 表内 (表格渲染后的默认高度)var tableDataHeight = headerHeight + bodyHeight; // 页面高度var pageHeight = document.getElementsByClassName('app-main')[0].offsetHeight; // 页内边距const pagePadding = 40; // 动态高度:el-form 搜索框var elFormHeight = document.getElementsByClassName('el-form')[0].offsetHeight; // 导出行高度(包含margin)const elRowOperButton = 36; // 分页高度(包含margin)const pagingHeight = 50; // 计算页面最大容纳高度var computeHeight = pageHeight - pagePadding - elFormHeight - elRowOperButton - pagingHeight; // 是否有X轴滚动条var hasScrollX = document.getElementsByClassName('el-table--scrollable-x').length; // 当 最大高度 大于 表格数据高度时,取表格高度(注:有滚动条时 + 滚动条高度)if (computeHeight > tableDataHeight) {computeHeight = (hasScrollX ? tableDataHeight + 17 : tableDataHeight) + 1; // 必须+1,否在有y轴滚动条出现}// console.log('表头', headerHeight,//   'rowHeights', rowHeights,//   'pageHeight', pageHeight, //   'lastHeight', computeHeight,//   'tableDataHeight', tableDataHeight,//   'computeHeight', computeHeight,// )return computeHeight;}}}
</script>

这篇关于【Vue+ElementUI】el-table动态高度设置及表格内容错乱对不齐的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/945388

相关文章

python设置环境变量路径实现过程

《python设置环境变量路径实现过程》本文介绍设置Python路径的多种方法:临时设置(Windows用`set`,Linux/macOS用`export`)、永久设置(系统属性或shell配置文件... 目录设置python路径的方法临时设置环境变量(适用于当前会话)永久设置环境变量(Windows系统

MySQL CTE (Common Table Expressions)示例全解析

《MySQLCTE(CommonTableExpressions)示例全解析》MySQL8.0引入CTE,支持递归查询,可创建临时命名结果集,提升复杂查询的可读性与维护性,适用于层次结构数据处... 目录基本语法CTE 主要特点非递归 CTE简单 CTE 示例多 CTE 示例递归 CTE基本递归 CTE 结

go动态限制并发数量的实现示例

《go动态限制并发数量的实现示例》本文主要介绍了Go并发控制方法,通过带缓冲通道和第三方库实现并发数量限制,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面... 目录带有缓冲大小的通道使用第三方库其他控制并发的方法因为go从语言层面支持并发,所以面试百分百会问到

Go语言编译环境设置教程

《Go语言编译环境设置教程》Go语言支持高并发(goroutine)、自动垃圾回收,编译为跨平台二进制文件,云原生兼容且社区活跃,开发便捷,内置测试与vet工具辅助检测错误,依赖模块化管理,提升开发效... 目录Go语言优势下载 Go  配置编译环境配置 GOPROXYIDE 设置(VS Code)一些基本

小白也能轻松上手! 路由器设置优化指南

《小白也能轻松上手!路由器设置优化指南》在日常生活中,我们常常会遇到WiFi网速慢的问题,这主要受到三个方面的影响,首要原因是WiFi产品的配置优化不合理,其次是硬件性能的不足,以及宽带线路本身的质... 在数字化时代,网络已成为生活必需品,追剧、游戏、办公、学习都离不开稳定高速的网络。但很多人面对新路由器

linux批量替换文件内容的实现方式

《linux批量替换文件内容的实现方式》本文总结了Linux中批量替换文件内容的几种方法,包括使用sed替换文件夹内所有文件、单个文件内容及逐行字符串,强调使用反引号和绝对路径,并分享个人经验供参考... 目录一、linux批量替换文件内容 二、替换文件内所有匹配的字符串 三、替换每一行中全部str1为st

从入门到精通详解LangChain加载HTML内容的全攻略

《从入门到精通详解LangChain加载HTML内容的全攻略》这篇文章主要为大家详细介绍了如何用LangChain优雅地处理HTML内容,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录引言:当大语言模型遇见html一、HTML加载器为什么需要专门的HTML加载器核心加载器对比表二

MySQL 8 中的一个强大功能 JSON_TABLE示例详解

《MySQL8中的一个强大功能JSON_TABLE示例详解》JSON_TABLE是MySQL8中引入的一个强大功能,它允许用户将JSON数据转换为关系表格式,从而可以更方便地在SQL查询中处理J... 目录基本语法示例示例查询解释应用场景不适用场景1. ‌jsON 数据结构过于复杂或动态变化‌2. ‌性能要

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

一文详解SpringBoot中控制器的动态注册与卸载

《一文详解SpringBoot中控制器的动态注册与卸载》在项目开发中,通过动态注册和卸载控制器功能,可以根据业务场景和项目需要实现功能的动态增加、删除,提高系统的灵活性和可扩展性,下面我们就来看看Sp... 目录项目结构1. 创建 Spring Boot 启动类2. 创建一个测试控制器3. 创建动态控制器注