element表单搜索框与表格高度自适应

news2024/11/15 12:47:59

一般在后台管理系统中,表单搜索框和表格的搭配是非常常见的,如下所示:
在这里插入图片描述
在该图中,搜索框有五个,分为了两行排列。但根据大多数的UI标准,搜索框默认只显示一行,多余的需要进行隐藏。此时的页面被上部分的搜索框和下部分的表格框所填充,如果搜索框默认显示一行,在展开下面行时,搜索框高度变化,势必要引起表格框高度的变化。此时就需要对上下两个div的高度进行计算。形成下图所示:
1.搜索框收起状态:可以看到搜索框的最右边有个向下的按钮
在这里插入图片描述

2.搜索框展开状态:最右边方向键变为向上
在这里插入图片描述
可以看到此时表格的高度是跟随着搜索框的高度变动的,两者始终保持占满整个屏幕。
光是这样还有欠缺,在页面缩放的时候,高度也应该跟着一起变动才行,如下图所示:将整个页面缩小了比例为67%,但表单与表格依然撑满整个画面。
在这里插入图片描述
首先我们使用全局element-resize-detector监听DOM元素

npm install element-resize-detector

创建mixin文件夹,里面创建一个index.js,该文件作为公共js使用,所有需要用到表单表格自适应的直接引用该文件就好。

// 引入监听并使用
import elementResizeDetectorMaker from "element-resize-detector";
export default {
  data() {
    return {
      tableHight: 0,      // 表格高度
      searchShow: false,  // 搜索表单多行隐显
      hight: 0,           // pageHead高度
    }
  },
  mounted() {
    this.watchSize()
  },
  methods: {
    // 高度监听,自适应表格
    watchSize() {
      this.$nextTick(() => {
        let erd = elementResizeDetectorMaker();
        // 页面高度监听
        erd.listenTo(this.$refs.pageTotal, () => { 
          let fullHeight = document.body.offsetHeight
          let tableEle = document.querySelector('.el-table')
          // 表格top
          let { top } = tableEle.getBoundingClientRect()
          // 搜索框高度
          this.hight = this.$refs.pageHead.offsetHeight + 16
          // css变量定义
          // 注意这里的--height, 是给page.less文件的,因为很多页面需要用到改样式所以都一起封装到一个文件中了,下面会提到。
          this.$el.style.setProperty('--height', this.hight)
          this.tableHight = fullHeight - top - 85    // 这个地方的85看各人情况可以做修改
        });
      })
    },
  }
}

要想直接使用该代码,表单表格所在的页面还需要做如下配置 index.vue:

<template>
  <div class="page-total" ref="pageTotal">
    <div class="page-head" ref="pageHead">
      <div class="head-title">表单表格高度自适应</div>
      <!-- 搜索表单 -->
      <div class="head-search">
      	<el-form ref="searchForm" class="search-form" :model="searchForm" label-width="150px">
      	  <!-- 搜索框的第一排 -->
          <el-row>
            <!-- 这个位置放前四个搜索框,下面这个按钮就是展开收起剪头 -->
            <el-button @click="searchShow = !searchShow; watchSize()" style="margin-left:10px;" :class="[{'el-icon-arrow-down': !searchShow},{'el-icon-arrow-up': searchShow}]"></el-button>
          </el-row>
          <!-- 搜索框的第二排 -->
          <el-row v-show="searchShow">
          
          </el-row>
        </el-form>
      </div>
    </div>
    <div class="page-inner-content"> 
      <!-- 表格 -->
      <el-table :data="tableData" border stripe :height="tableHight">
         <!-- 表格内容 -->
      </el-table>
     </div>
  </div>
</template>

<script>
// 这里需要引用才可以生效喔
import mixin from '../mixin'
export default {
  mixins: [mixin],
  data() {
    return {}
  }
}
</script>
// 引入page.less
<style lang="less" scoped>
@import '../page.less';
</style>

下面的page.less的基础架构:

.page-total{
  width: 100%;
  height: 100%;
  position: relative;
  background-color: #F5F5F6;
  padding: 16px;
  overflow: auto;
  .search-form{
    width: calc(100% - 165px);
  }
  .page-head{
    background-color: #fff;
    border-radius: 4px;
    padding: 0 16px;
    .head-search{
      display: flex;
      justify-content: space-between;
    }
  }
  .page-inner-content{
    // 这里的height变量是从mixin中获取的
    height: calc(100% - var(--height));
    background-color: #fff;
    margin-top: 16px;
    padding: 16px;
    border-radius: 4px;
  }
}

注意page.less,inde.vue,mixin三者之间的参数关联

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

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

相关文章

【Flutter入门到进阶】跨平台相关-Flutter的选择

1.回顾Android渲染机制工作流程 1.1 图例 1.2 说明 1.Android内部自己通过skia引起完成图像构建 2.Android通过surfacefilinger来完成图像与驱动之间的处理 2 自建渲染引擎渲染方案 自建渲染引擎渲染方案&#xff0c;是有别于Web渲染采用WebView容器进行渲染UI、原生渲染…

软件设计(十)--计算机系统知识

软件设计&#xff08;九&#xff09;https://blog.csdn.net/ke1ying/article/details/128990035 一、效验码 奇偶效验&#xff1a;是一种最简单的效验方法。基本思想是&#xff1a;通过在编码中增加一个效验位来使编码中1的个数为奇数&#xff08;奇效验&#xff09;或者为偶…

微内核架构

QNX微内核架构 设计原则 最小化内核功能 将操作系统功能移到用户态&#xff0c;成为Server“服务”。在用户模块之间&#xff0c;通过消息传递机制通信。 在宏内核中&#xff0c;文件系统和磁盘驱动都是运行在内核态&#xff0c;应用通过内核调用文件系统&#xff0c;文件系…

Ubuntu搭建博客typecho

提示 见过这样类型的blog吧&#xff0c;现在就是最详细的搭建过程。 第一步 搭建apache2环境 安装命令 sudo apt -y install apache2 apache2-utils访问项目地址&#xff1a; /var/www/html配置文件在: /etc/apache2/日志在&#xff1a; /var/log/apache2/ 修改配置文件 vim…

如何在项目中正确使用异常?

文章目录异常系列文章一、异常介绍二、异常体系三、异常处理机制四、异常处理五、异常调用链异常系列文章 如何在项目中正确使用异常&#xff1f;如何优雅的设计Java异常Java统一异常处理–实战篇Java 异常处理的误区和经验总结你要的Java常见异常都在这里Java中异常抛出后代码…

SpringBoot后端接口请求参数映射方式详解

在SpringBoot项目中&#xff0c;前端HTTP请求中的参数如何映射到Controller层的接口方法中的参数&#xff1f;这里针对各种方式做一个测试与总结。 1&#xff1a;QueryString方式 QueryString参数传递的方式为&#xff0c;在请求URL中直接拼接请求参数如&#xff1a;URL?para…

Java实现调用ChatGPT详解

Java调用ChatGPT的小插件1. 申请ChatGPT账号2. 配置阶段2.1 依赖引入2.2 配置application.yml文件2.3 EnableChatGPT注解3. 使用4. 测试1. 申请ChatGPT账号 CSDN上面有很多申请ChatGPT账号的教程&#xff0c;可以直接搜索chatgpt账号注册&#xff0c;然后按照高赞的几个回答注…

谷粒商城--SPU和SKU

目录 1.SPU和SKU概念 2.表的关系理解 3.导入前端代码 4.完善后端接口 5.属性分组详情 6.规格参数详情 7. 销售属性详情 8.分组与属性关联 9.发布商品 10.仓库服务 1.SPU和SKU概念 SPU&#xff1a;standard product unit(标准化产品单元)&#xff1a;是商品信息聚合的…

链表OJ(一)

目录 从尾到头打印链表_牛客题霸_牛客网 160. 相交链表 141. 环形链表 142. 环形链表 II 138. 复制带随机指针的链表 从尾到头打印链表_牛客题霸_牛客网 输入一个链表的头节点&#xff0c;按链表从尾到头的顺序返回每个节点的值&#xff08;用数组返回&#xff09;。 如输入…

Three.js中的3D文字效果

对于一些设计网页中经常会出现一些3D的文字效果&#xff0c;本文将利用Three.js实现各种动画WebGL文本输入效果。 示例效果 原文章 文本采样 通常情况下&#xff0c;文本网格是2D的平面形状&#xff0c;我们所要实现的3D文本形状则是要在2D的平面下&#xff0c;再生成z值形成…

Oracle数据库启停命令

在日常工作中&#xff0c;关于数据库的启停&#xff1a;   先关闭上层应用服务 --> 关闭监听 --> 关闭数据库&#xff1b;   启动数据库 --> 启动监听 --> 启动应用(Oracle SQL Developer)。 监听lsnrctl Oracle监听命令。 lsnrctl start [listener-name]&a…

Xml格式化与高亮显示

具体请参考&#xff1a;Xml格式化与高亮显示

分布式系统的数据一致性方案

1、在出现一致性问题时如果系统的并发或不一致情况较少&#xff0c;可以先使用重试来解决 a、同步重试 b、异步重试 c、入库&#xff0c;定时任务重试 2、分布式事务 基于数据库 XA 协议的 2PC、3PC&#xff0c;基于业务层的TCC,基于消息队列消息表的最终一致性方案&#xff0…

七大设计原则之接口隔离原则应用

目录1 接口隔离原则介绍2 接口隔离原则应用1 接口隔离原则介绍 接口隔离原则&#xff08;Interface Segregation Principle, ISP&#xff09;是指用多个专门的接口&#xff0c;而不使用单一的总接口&#xff0c;客户端不应该依赖它不需要的接口。这个原则指导我们在设计接口时…

八、Git远程仓库操作——跨团队成员的协作

前言 前面一篇博文介绍了git团队成员之间的协作&#xff0c;现在在介绍下如果是跨团队成员的话&#xff0c;如何协作&#xff1f; 跨团队成员协作&#xff0c;其实就是你不属于那个项目的成员&#xff0c;你没有权限向那个仓库提交代码。但是github还有另一种 pull request&a…

图形化深度学习开发平台PaddleStudio(代码开源)

目录一、PaddleStudio概述二、环境准备2.1 安装PaddlePaddle2.2 安装依赖库三、基本使用介绍3.1 启动3.2 快速体验3.2.1 下载示例项目3.2.2 训练3.2.3 评估3.2.4 测试3.2.5 静态图导出四、数据集格式4.1 图像分类4.2 目标检测4.3 语义分割4.4 实例分割五、趣味项目实战&#xf…

【前端笔试题二】从一个指定数组中,每次随机取一个数,且不能与上次取数相同,即避免相邻取数重复

前言 本篇文章记录下我在笔试过程中遇到的真实题目&#xff0c;供大家参考。 1、题目 系统给定一个数组&#xff0c;需要我们编写一个函数&#xff0c;该函数每次调用&#xff0c;随机从该数组中获取一个数&#xff0c;且不能与上一次的取数相同。 2、思路解析 数组已经有了…

Java编译过程、JIT编译详解、类加载过程

文章目录Java编译执行过程类加载过程即时编译JITJIT编译优化中的常见技术方法内联逃逸分析 栈上分配 锁消除小总结Java编译执行过程 提到编译,可能大多数人想到的就是将**.java编译成***.class文件,但其实Java代码的编译执行是一个非常复杂的过程,将**.java编译成**.class…

Lesson1:初识编程语言、Python环境搭建

一、什么是编程语言 用来和计算机交流&#xff0c;控制计算机&#xff0c;让计算机按照我们的要求做事情&#xff0c;这样的语言叫做编程语言。 Note&#xff1a;编程语言四个字可以拆成两个部分进行理解——编程语言。 所谓语言&#xff0c;它的作用就是交流&#xff0c;向对…