element-ui table高度自适应实现分享

文章目录

    • 概要
    • 实现思路
    • 具体代码
      • 自适应封装mixins代码
      • 使用示例组件代码
    • 附加分享

概要

在后台管理系统开发过程中,通常我们的布局都是如下图。这里面比较头疼的问题就是右侧这个table的高度自适应问题,接下来我将分享如何简单实现表格高度自适应。

实现思路

1、表格高度=视口高度-头部搜索表单的高度-其他(margin/padding)
2、为了不每个组件都写那些计算的代码,提取一个mixins,要实现自适应引用下就行

具体代码

自适应封装mixins代码

首先那个toggleExpand方法不看。

1、组件第一次渲染算一次,第一次就不用防抖了;
2、然后就是注册resize事件,窗口尺寸变化再触发计算,这里要防抖啊;
3、里面查询表单的高度要动态获取,原因就是不同窗口尺寸表单项会出现换行的情况

exportdefault{data(){return{fixedHeight:120,tableHeight:undefined,resizeTimer:null,isExpanded:false}},mounted(){this.updateHeight()window.addEventListener('resize',this.resizeHandler)},beforeDestroy(){window.removeEventListener('resize',this.resizeHandler)},methods:{resizeHandler(){this.resizeTimer&&clearTimeout(this.resizeTimer)this.resizeTimer=setTimeout(()=>{this.updateHeight()},300)},updateHeight(){constformEl=document.querySelector('.header-form')constformHeight=formEl?formEl.offsetHeight:60this.tableHeight=window.innerHeight-this.fixedHeight-formHeight-20},toggleExpand(){this.isExpanded=!this.isExpandedthis.$nextTick(()=>{this.updateHeight()})}}}

使用示例组件代码

1、这里代码不兴放一半所以App代码也放在下面了;
2、使用步骤:
(1)、导入注册mixins
(2)、然后table height绑定tableHeight,这样就OK了

App组件代码

<template><div id="app"><divclass="header-container"></div><divclass="bottom-container"><divclass="bottom-left-container"></div><divclass="bottom-right-container"><User/></div></div></div></template><script>importUserfrom'@/views/User.vue'exportdefault{components:{User}}</script><style lang="less">#app{position:fixed;top:0;left:0;height:100%;width:100%;display:flex;flex-direction:column;.header-container{height:80px;background-color:#34495d;}.bottom-container{height:0;flex:1;display:flex;.bottom-left-container{width:200px;height:100%;background-color:#43bd87;}.bottom-right-container{height:100%;width:0;flex:1;overflow:auto;}}}</style>

User组件代码

<template><divclass="user-container"><el-form label-position="left"label-width="50px":model="formDtas"class="header-form"><el-row:gutter="20"><el-col:xs="24":sm="12":md="8":lg="6"><el-form-item label="姓名"><el-input v-model="formDtas.Name"></el-input></el-form-item></el-col><el-col:xs="24":sm="12":md="8":lg="6"><el-form-item label="年龄"><el-input v-model="formDtas.Age"></el-input></el-form-item></el-col><el-col:xs="24":sm="12":md="8":lg="6"><el-form-item label="姓名"><el-input v-model="formDtas.Name"></el-input></el-form-item></el-col><el-col:xs="24":sm="12":md="8":lg="6"><el-form-item label="年龄"v-if="isExpanded"><el-input v-model="formDtas.Age"></el-input></el-form-item><div v-else><el-button type="primary">查询</el-button><el-button type="text"@click="toggleExpand"class="expand-btn">{{isExpanded?'收起':'展开'}}<i:class="['el-icon-arrow-' + (isExpanded ? 'up' : 'down')]"></i></el-button></div></el-col></el-row><div v-if="isExpanded"><el-row:gutter="20"><el-col:xs="24":sm="12":md="8":lg="6"><el-form-item label="姓名"><el-input v-model="formDtas.Name"></el-input></el-form-item></el-col><el-col:xs="24":sm="12":md="8":lg="6"><el-form-item label="年龄"><el-input v-model="formDtas.Age"></el-input></el-form-item></el-col><el-col:xs="24":sm="12":md="8":lg="6"><div><el-button type="primary">查询</el-button><el-button type="text"@click="toggleExpand"class="expand-btn">{{isExpanded?'收起':'展开'}}<i:class="['el-icon-arrow-' + (isExpanded ? 'up' : 'down')]"></i></el-button></div></el-col></el-row></div></el-form><el-table:data="tableDatas"style="width: 100%"border:height="tableHeight"><el-table-column prop="Name"label="姓名"></el-table-column><el-table-column prop="Age"label="年龄"></el-table-column><el-table-column prop="Gender"label="性别"></el-table-column></el-table></div></template><script>importtableAutoHeightfrom'@/mixins/tableAutoHeight.js'exportdefault{mixins:[tableAutoHeight],data(){return{formDtas:{Name:'',Age:''},tableDatas:[{Name:'张三',Age:20,Gender:'男'},{Name:'王五',Age:30,Gender:'男'},{Name:'李四',Age:25,Gender:'女'},{Name:'老王',Age:25,Gender:'女'},{Name:'张三',Age:20,Gender:'男'},{Name:'王五',Age:30,Gender:'男'},{Name:'李四',Age:25,Gender:'女'},{Name:'老王',Age:25,Gender:'女'},{Name:'张三',Age:20,Gender:'男'},{Name:'王五',Age:30,Gender:'男'},{Name:'李四',Age:25,Gender:'女'},{Name:'老王',Age:25,Gender:'女'},{Name:'张三',Age:20,Gender:'男'},{Name:'王五',Age:30,Gender:'男'},{Name:'李四',Age:25,Gender:'女'},{Name:'老王',Age:25,Gender:'女'},{Name:'张三',Age:20,Gender:'男'},{Name:'王五',Age:30,Gender:'男'},{Name:'李四',Age:25,Gender:'女'},{Name:'老王',Age:25,Gender:'女'}]}},mounted(){},computed:{},methods:{},}</script><style scoped lang="less">.user-container{padding:20px;}</style>

附加分享

实现了表格自适应想处理下头部查询表单项换行的问题。这里就使用格栅布局。
思路:1、每行显示四列,折叠的情况下第一行最后一列就显示那个查询按钮,展开情况下第一行最后列就是表单项显示,按钮隐藏;2、超出四个的表单项都用一个div包起来(el-row超出会自动换行的),初始隐藏,展开就显示;3、触发展开/隐藏表格高度要重新算啊。
代码都在上面了,相信各位大佬肯定是看得懂的。

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

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

相关文章

Linux Rootkit 手法解析(下):深入内核态的“隐形”攻防战

在上篇文章中&#xff0c;我们剖析了用户态Rootkit的种种手法&#xff0c;它们如同在操作系统的“外部广场”上进行伪装和欺骗。尽管手段多样&#xff0c;但其隐蔽性终究受限于用户空间的环境&#xff0c;细心的守护者总能通过多种方法发现端倪。 但此刻&#xff0c;我们将要推…

Linux Rootkit 手法解析(上):用户态的“隐身术”与检测思路

Linux Rootkit是一类针对Linux操作系统设计的恶意工具集&#xff0c;它通过多种方式隐藏自身和攻击活动&#xff0c;使得攻击者能够绕过安全防御机制&#xff0c;在受害主机上非法维持控制权限&#xff0c;因此常被喻为黑客的“隐身斗篷”。 面对这种高级威胁&#xff0c;了解…

TikTok矩阵工具实操指南:分主体适配与落地流程拆解

图片来源&#xff1a;TK云大师摘要&#xff1a;TikTok矩阵运营的核心竞争力&#xff0c;在于工具与业务需求的精准适配。对于号商、品牌方、跨境电商而言&#xff0c;工具选型失误会直接导致运营效率低下、账号风险攀升。本文聚焦三类主体的核心需求&#xff0c;拆解可直接复用…

人群仿真软件:Pathfinder_(3).人群建模与行为设置

人群建模与行为设置 在人群仿真软件中&#xff0c;人群建模与行为设置是至关重要的步骤&#xff0c;它直接影响到仿真的准确性和可靠性。本节将详细介绍如何在Pathfinder中进行人群建模和行为设置&#xff0c;包括人群属性的定义、行为模式的选择和自定义行为的创建。 1. 人群…

人群仿真软件:Pathfinder_(2).Pathfinder的基本功能与操作

Pathfinder的基本功能与操作 1. 软件界面介绍 1.1 主界面布局 Pathfinder 的主界面布局清晰&#xff0c;主要分为以下几个部分&#xff1a; 菜单栏&#xff1a;包含文件、编辑、视图、工具等常规操作。 工具栏&#xff1a;提供常用的工具按钮&#xff0c;如新建、打开、保存…

DeepSeek+Cursor封神指南:AI驱动编码全流程实战(含代码精解)

目录标题 一、工具选型&#xff1a;为什么是DeepSeekCursor&#xff1f;二、环境搭建&#xff1a;3步接入满血版DeepSeek2.1 前置准备2.2 配置Cursor与DeepSeek2.3 进阶配置&#xff08;优化性能与体验&#xff09; 三、核心操作&#xff1a;CursorDeepSeek快捷用法四、实战案例…

FastAPI系列(02):第一个示例

本系列汇总,请查看这里:https://www.cnblogs.com/uncleyong/p/19503695python环境 python pycharm FastAPI安装 pip install fastapi 安装后就包好了pydantic、starlette 另外,FastAPI 推荐使用 uvicorn 来运行…

心愈语伴:DeepSeek+Qwen2.5打造专属情感聊天工具全教程

目录标题 一、工具核心架构与技术选型1.1 核心设计逻辑1.2 技术栈清单 二、前置准备&#xff1a;环境搭建与资源获取2.1 安装基础依赖2.2 获取DeepSeek API Token2.3 本地部署Qwen2.5-3B模型 三、核心开发&#xff1a;从接口封装到情感协同3.1 封装DeepSeek情感分析接口3.2 封装…

2026年会议纪要工具top9_工具_测评_ASR

2024 年高效语音处理方案推荐根据 IDC《2023 年中国人工智能语音转文字应用市场白皮书》&#xff0c;2023 年中国语音转文字市场规模达 87.6 亿元&#xff0c;同比增长 34.2%&#xff0c;企业级用户对实时转写、多语言支持的需求同比提升 41%。从微观来看&#xff0c;传统会议记…

Vue3+Cesium教程(38)--动态雾浓度、颜色

本学习系列以Cesium Vue3 Typescriptelementplus作为主要技术栈&#xff0c;后续会循序渐进&#xff0c;持续探索Cesium的高级功能&#xff0c;敬请期待。欢迎关注威信公众号“webgis学习”。详情请查阅原文 Vue3Cesium教程(38)--动态雾浓度、颜色https://mp.weixin.qq.com/s…

一天一个Python库:requests - 简单好用的HTTP请求库

requests - 简单好用的HTTP请求库 一、什么是requests? requests 是一个用于发送HTTP请求的 Python 库。 它可以帮助你:轻松发送GET、POST、PUT、DELETE等请求 处理Cookie、会话等复杂性 自动解压缩内容 处理国际化域…

Vue3+Cesium教程(37)--下雪啦!动态设置降雪效果

本学习系列以Cesium Vue3 Typescriptelementplus作为主要技术栈&#xff0c;后续会循序渐进&#xff0c;持续探索Cesium的高级功能&#xff0c;敬请期待。详情请查阅原文 Vue3Cesium教程(37)--下雪啦&#xff01;动态设置降雪效果https://mp.weixin.qq.com/s/5RFjzPKzkVLy_7h…

星瞳OpenMV官方机械臂教程|从零开始:Robot Arm机械臂快速上手

欢迎观看OpenMV官方机械臂的第一期教程&#xff01;本期将带你快速了解机械臂并掌握基础操作。 看完后&#xff0c;你就能开始创建自己的专属项目啦&#xff01; OpenMV官方机械臂教程|从零开始快速上手*具体教程和源码可在星瞳科技OpenMV官网[OpenMV.cc]查看哦&#xff01; …

【docker部署milvus向量库和可视化界面attu】

docker compose部署milvus和attu 一、配置docker镜像源1.配置镜像源2.重启Docker服务3.验证是否生效 二、docker部署milvus和可视化界面attu1.创建目录结构2.创建docker-compose.yml文件 4.通过docker compose命令快捷管理容器 一、配置docker镜像源 1.配置镜像源 Docker的配…

PX4中关于GPS质量检测和相关控制参数

一、PX4关于GPS质量检测的相关参数 PX4官方参数树&#xff1a;参数参照表 | PX4 Guide (main) 1、EKF2_GPS_CHECK (INT32)&#xff1a; Integer bitmask controlling GPS checks Comment: Each threshold value is defined by the parameter indicated next to the check. …

PX4导航遇到GPS数据丢失的处理和相关控制参数

PX4导航时GPS数据丢失的处理 1. GPS数据丢失的检测与驱动层处理 PX4的检测&#xff1a;GPS驱动通过poll()系统调用轮询接收数据&#xff0c;当超过1秒无有效数据时标记为不健康&#xff08;_healthyfalse&#xff09;重连&#xff1a;驱动会关闭并重启串口&#xff0c;在参数中…

Java小白求职者面试:从Spring Boot到微服务架构设计的问答解析

场景描述 超好吃是一位初入职场的Java程序员&#xff0c;今天他来到一家互联网大厂&#xff0c;面试官是一位严肃且经验丰富的技术专家。这次面试以内容社区与UGC为业务场景&#xff0c;展开了关于Spring Boot、微服务架构设计和安全框架的技术问答。第一轮&#xff1a;基础知识…

day162—递归—买卖股票的最佳时机Ⅱ(LeetCode-122)

题目描述给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。然而&#xff0c;你可以在 同一天 多次买卖该股票&#xff0c;但要确保你持有的股票不…

day163—递归—买卖股票的最佳时机含冷冻期(LeetCode-309)

题目描述给定一个整数数组prices&#xff0c;其中第 prices[i] 表示第 i 天的股票价格 。​设计一个算法计算出最大利润。在满足以下约束条件下&#xff0c;你可以尽可能地完成更多的交易&#xff08;多次买卖一支股票&#xff09;:卖出股票后&#xff0c;你无法在第二天买入股…

Jupyter Notebook的5个实用技巧,可视化模型训练过程

一、5个实用技巧&#xff1a;从“黑箱训练”到“可视化调试” 技巧1&#xff1a;用LiveLossPlot实时绘制训练损失曲线 痛点&#xff1a;训练时需手动记录损失值&#xff0c;无法实时观察模型收敛趋势。解决方案&#xff1a; python# 安装&#xff1a;pip install livelossplo…