【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

相关文章

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

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

linux hostname设置全过程

《linuxhostname设置全过程》:本文主要介绍linuxhostname设置全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录查询hostname设置步骤其它相关点hostid/etc/hostsEDChina编程A工具license破解注意事项总结以RHE

Python设置Cookie永不超时的详细指南

《Python设置Cookie永不超时的详细指南》Cookie是一种存储在用户浏览器中的小型数据片段,用于记录用户的登录状态、偏好设置等信息,下面小编就来和大家详细讲讲Python如何设置Cookie... 目录一、Cookie的作用与重要性二、Cookie过期的原因三、实现Cookie永不超时的方法(一)

springboot如何通过http动态操作xxl-job任务

《springboot如何通过http动态操作xxl-job任务》:本文主要介绍springboot如何通过http动态操作xxl-job任务的问题,具有很好的参考价值,希望对大家有所帮助,如有错... 目录springboot通过http动态操作xxl-job任务一、maven依赖二、配置文件三、xxl-

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

前端如何通过nginx访问本地端口

《前端如何通过nginx访问本地端口》:本文主要介绍前端如何通过nginx访问本地端口的问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、nginx安装1、下载(1)下载地址(2)系统选择(3)版本选择2、安装部署(1)解压(2)配置文件修改(3)启动(4)

Java Web实现类似Excel表格锁定功能实战教程

《JavaWeb实现类似Excel表格锁定功能实战教程》本文将详细介绍通过创建特定div元素并利用CSS布局和JavaScript事件监听来实现类似Excel的锁定行和列效果的方法,感兴趣的朋友跟随... 目录1. 模拟Excel表格锁定功能2. 创建3个div元素实现表格锁定2.1 div元素布局设计2.

HTML中meta标签的常见使用案例(示例详解)

《HTML中meta标签的常见使用案例(示例详解)》HTMLmeta标签用于提供文档元数据,涵盖字符编码、SEO优化、社交媒体集成、移动设备适配、浏览器控制及安全隐私设置,优化页面显示与搜索引擎索引... 目录html中meta标签的常见使用案例一、基础功能二、搜索引擎优化(seo)三、社交媒体集成四、移动

HTML input 标签示例详解

《HTMLinput标签示例详解》input标签主要用于接收用户的输入,随type属性值的不同,变换其具体功能,本文通过实例图文并茂的形式给大家介绍HTMLinput标签,感兴趣的朋友一... 目录通用属性输入框单行文本输入框 text密码输入框 password数字输入框 number电子邮件输入编程框

HTML img标签和超链接标签详细介绍

《HTMLimg标签和超链接标签详细介绍》:本文主要介绍了HTML中img标签的使用,包括src属性(指定图片路径)、相对/绝对路径区别、alt替代文本、title提示、宽高控制及边框设置等,详细内容请阅读本文,希望能对你有所帮助... 目录img 标签src 属性alt 属性title 属性width/h