【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

相关文章

PostgreSQL 默认隔离级别的设置

《PostgreSQL默认隔离级别的设置》PostgreSQL的默认事务隔离级别是读已提交,这是其事务处理系统的基础行为模式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一 默认隔离级别概述1.1 默认设置1.2 各版本一致性二 读已提交的特性2.1 行为特征2.2

一文详解MySQL如何设置自动备份任务

《一文详解MySQL如何设置自动备份任务》设置自动备份任务可以确保你的数据库定期备份,防止数据丢失,下面我们就来详细介绍一下如何使用Bash脚本和Cron任务在Linux系统上设置MySQL数据库的自... 目录1. 编写备份脚本1.1 创建并编辑备份脚本1.2 给予脚本执行权限2. 设置 Cron 任务2

mtu设置多少网速最快? 路由器MTU设置最佳网速的技巧

《mtu设置多少网速最快?路由器MTU设置最佳网速的技巧》mtu设置多少网速最快?想要通过设置路由器mtu获得最佳网速,该怎么设置呢?下面我们就来看看路由器MTU设置最佳网速的技巧... 答:1500 MTU值指的是在网络传输中数据包的最大值,合理的设置MTU 值可以让网络更快!mtu设置可以优化不同的网

全面解析HTML5中Checkbox标签

《全面解析HTML5中Checkbox标签》Checkbox是HTML5中非常重要的表单元素之一,通过合理使用其属性和样式自定义方法,可以为用户提供丰富多样的交互体验,这篇文章给大家介绍HTML5中C... 在html5中,Checkbox(复选框)是一种常用的表单元素,允许用户在一组选项中选择多个项目。本

HTML5 搜索框Search Box详解

《HTML5搜索框SearchBox详解》HTML5的搜索框是一个强大的工具,能够有效提升用户体验,通过结合自动补全功能和适当的样式,可以创建出既美观又实用的搜索界面,这篇文章给大家介绍HTML5... html5 搜索框(Search Box)详解搜索框是一个用于输入查询内容的控件,通常用于网站或应用程

Python实现精准提取 PDF中的文本,表格与图片

《Python实现精准提取PDF中的文本,表格与图片》在实际的系统开发中,处理PDF文件不仅限于读取整页文本,还有提取文档中的表格数据,图片或特定区域的内容,下面我们来看看如何使用Python实... 目录安装 python 库提取 PDF 文本内容:获取整页文本与指定区域内容获取页面上的所有文本内容获取

CSS3中的字体及相关属性详解

《CSS3中的字体及相关属性详解》:本文主要介绍了CSS3中的字体及相关属性,详细内容请阅读本文,希望能对你有所帮助... 字体网页字体的三个来源:用户机器上安装的字体,放心使用。保存在第三方网站上的字体,例如Typekit和Google,可以link标签链接到你的页面上。保存在你自己Web服务器上的字

MySQL 设置AUTO_INCREMENT 无效的问题解决

《MySQL设置AUTO_INCREMENT无效的问题解决》本文主要介绍了MySQL设置AUTO_INCREMENT无效的问题解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录快速设置mysql的auto_increment参数一、修改 AUTO_INCREMENT 的值。

详解Linux中常见环境变量的特点与设置

《详解Linux中常见环境变量的特点与设置》环境变量是操作系统和用户设置的一些动态键值对,为运行的程序提供配置信息,理解环境变量对于系统管理、软件开发都很重要,下面小编就为大家详细介绍一下吧... 目录前言一、环境变量的概念二、常见的环境变量三、环境变量特点及其相关指令3.1 环境变量的全局性3.2、环境变

html 滚动条滚动过快会留下边框线的解决方案

《html滚动条滚动过快会留下边框线的解决方案》:本文主要介绍了html滚动条滚动过快会留下边框线的解决方案,解决方法很简单,详细内容请阅读本文,希望能对你有所帮助... 滚动条滚动过快时,会留下边框线但其实大部分时候是这样的,没有多出边框线的滚动条滚动过快时留下边框线的问题通常与滚动条样式和滚动行