【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

相关文章

使用SQL语言查询多个Excel表格的操作方法

《使用SQL语言查询多个Excel表格的操作方法》本文介绍了如何使用SQL语言查询多个Excel表格,通过将所有Excel表格放入一个.xlsx文件中,并使用pandas和pandasql库进行读取和... 目录如何用SQL语言查询多个Excel表格如何使用sql查询excel内容1. 简介2. 实现思路3

Spring MVC如何设置响应

《SpringMVC如何设置响应》本文介绍了如何在Spring框架中设置响应,并通过不同的注解返回静态页面、HTML片段和JSON数据,此外,还讲解了如何设置响应的状态码和Header... 目录1. 返回静态页面1.1 Spring 默认扫描路径1.2 @RestController2. 返回 html2

vue解决子组件样式覆盖问题scoped deep

《vue解决子组件样式覆盖问题scopeddeep》文章主要介绍了在Vue项目中处理全局样式和局部样式的方法,包括使用scoped属性和深度选择器(/deep/)来覆盖子组件的样式,作者建议所有组件... 目录前言scoped分析deep分析使用总结所有组件必须加scoped父组件覆盖子组件使用deep前言

VUE动态绑定class类的三种常用方式及适用场景详解

《VUE动态绑定class类的三种常用方式及适用场景详解》文章介绍了在实际开发中动态绑定class的三种常见情况及其解决方案,包括根据不同的返回值渲染不同的class样式、给模块添加基础样式以及根据设... 目录前言1.动态选择class样式(对象添加:情景一)2.动态添加一个class样式(字符串添加:情

四种简单方法 轻松进入电脑主板 BIOS 或 UEFI 固件设置

《四种简单方法轻松进入电脑主板BIOS或UEFI固件设置》设置BIOS/UEFI是计算机维护和管理中的一项重要任务,它允许用户配置计算机的启动选项、硬件设置和其他关键参数,该怎么进入呢?下面... 随着计算机技术的发展,大多数主流 PC 和笔记本已经从传统 BIOS 转向了 UEFI 固件。很多时候,我们也

SpringCloud配置动态更新原理解析

《SpringCloud配置动态更新原理解析》在微服务架构的浩瀚星海中,服务配置的动态更新如同魔法一般,能够让应用在不重启的情况下,实时响应配置的变更,SpringCloud作为微服务架构中的佼佼者,... 目录一、SpringBoot、Cloud配置的读取二、SpringCloud配置动态刷新三、更新@R

el-select下拉选择缓存的实现

《el-select下拉选择缓存的实现》本文主要介绍了在使用el-select实现下拉选择缓存时遇到的问题及解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录项目场景:问题描述解决方案:项目场景:从左侧列表中选取字段填入右侧下拉多选框,用户可以对右侧

Linux中chmod权限设置方式

《Linux中chmod权限设置方式》本文介绍了Linux系统中文件和目录权限的设置方法,包括chmod、chown和chgrp命令的使用,以及权限模式和符号模式的详细说明,通过这些命令,用户可以灵活... 目录设置基本权限命令:chmod1、权限介绍2、chmod命令常见用法和示例3、文件权限详解4、ch

React实现原生APP切换效果

《React实现原生APP切换效果》最近需要使用Hybrid的方式开发一个APP,交互和原生APP相似并且需要IM通信,本文给大家介绍了使用React实现原生APP切换效果,文中通过代码示例讲解的非常... 目录背景需求概览技术栈实现步骤根据 react-router-dom 文档配置好路由添加过渡动画使用

SpringBoot项目引入token设置方式

《SpringBoot项目引入token设置方式》本文详细介绍了JWT(JSONWebToken)的基本概念、结构、应用场景以及工作原理,通过动手实践,展示了如何在SpringBoot项目中实现JWT... 目录一. 先了解熟悉JWT(jsON Web Token)1. JSON Web Token是什么鬼