一文解决vue2 element el-table自适应高度问题

 更新时间:2023年11月21日 10:44:28   作者:gua了个gua  
在写公司后台项目的时候遇到一个需求,要求表格页面不能有滚动条,所以必须封装一个公共方法来实现表格自适应高度,本问小编给大家介绍了如何解决vue2 element el-table自适应高度问题,需要的朋友可以参考下

解决element表格自适应高度问题

在写公司后台项目的时候遇到一个需求,要求表格页面不能有滚动条,所以必须封装一个公共方法来实现表格自适应高度

第一步 实现自定义指令去监听表格元素高度变化

我这边使用封住思想 首先创建在obSize文件夹下创建index.js内容如下

const map = new WeakMap()
// ob监听
const ob = new ResizeObserver((entries) => {
   for (const entry of entries) {
       // 处理元素对应的回调
       const handler = map.get(entry.target)
       if (handler) {
           const box = entry.borderBoxSize[0]
           // 循环entry.target 累加offsetTop 从而得到距离页面顶部距离
           let setTop = countTop(entry.target, 0)

           handler({
               width: box.inlineSize,
               height: box.blockSize,
               entry: entry,
               bodHeight: window.document.body.clientHeight,
               setTop: setTop,
               tableHeight: (window.document.body.clientHeight - setTop - 50 - box.inlineSize) > 0 ? '' : window.document.body.clientHeight - setTop - 72
           })
       }
   }
})

export function countTop(el, topn) {
   if (el.offsetParent) {
       return countTop(el.offsetParent, topn + el.offsetTop)
   } else {
       return topn
   }

}
export default {
   inserted(el, binding) {
       ob.observe(el)
       // 监听el元素尺度的变化
       map.set(el, binding.value)
   },
   unbind(el) {
       // 取消监听
       ob.unobserve(el)
   },
}

注册vue指令在directive文件夹index.js文件中

import obSize from './obSize'
const install = function (Vue) {
  //这里可以放入多个自定义指令
  Vue.directive('ob-size', obSize)
}

if (window.Vue) {

  Vue.use(install); // eslint-disable-line
}

export default install

在main.js引入directive

import directive from './directive'
Vue.use(directive)

第二步 封装mixins

在mixins文件夹内创建estimateTableHeight.js内容如下 70 代表距离页面底部的高度

import { countTop } from '@/directive/obSize'
export default {
    data() {
        return {
            tableHeight: 0,
        }
    },
    methods: {
        handleSizeChange(e) {
            this.tableHeight = e.tableHeight;
        },
    },
    // 监听showSearch
    watch: {
        showSearch(val) {
            // 获取element table元素
            const dome = document.getElementsByClassName('el-table');
            let setTop = countTop(dome, 0)
            this.tableHeight = window.document.body.clientHeight - setTop - 70
        },
    },
    mounted() {
    //监听页面尺寸变化
        window.addEventListener('resize', () => {
            const dome = document.getElementsByClassName('el-table');
            let setTop = countTop(dome, 0)
            this.tableHeight = window.document.body.clientHeight - setTop - 70
        });
    },
}


第三步 在页面引入

引入 import estimateTableHeight from "@/mixins/estimateTableHeight";

export default { mixins: [estimateTableHeight], }

在el-table上加入 v-ob-size="handleSizeChange" :height="tableHeight"

<el-table
        v-ob-size="handleSizeChange"
        :height="tableHeight"
        v-loading="loading"
        :data="List"
>
      

大功告成!

以上就是一文解决vue2 element el-table自适应高度问题的详细内容,更多关于vue2 element el-table自适应高度的资料请关注脚本之家其它相关文章!

相关文章

  • Vue实例挂载的全流程详解

    Vue实例挂载的全流程详解

    理解 Vue 实例的挂载过程,不仅有助于我们更好地掌握 Vue 的核心原理,还能提高我们在开发中的调试和优化能力,下面就跟随小编一起学习一下吧
    2024-12-12
  • axios发送post请求,提交图片类型表单数据方法

    axios发送post请求,提交图片类型表单数据方法

    下面小编就为大家分享一篇axios发送post请求,提交图片类型表单数据方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-03-03
  • Vue中watch清除过期副作用的案例详解

    Vue中watch清除过期副作用的案例详解

    在这里就不过多说watch的用法了,这篇文章主要通过案例带大家了解一下如何清除过期的副作用。文中的示例代码讲解详细,感兴趣的小伙伴可以了解一下
    2023-01-01
  • vue项目中引入vue-datepicker插件的详解

    vue项目中引入vue-datepicker插件的详解

    这篇文章主要介绍了vue项目中引入vue-datepicker插件,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-05-05
  • Vue数据绑定实例写法

    Vue数据绑定实例写法

    在本篇文章里小编给大家整理的是关于Vue数据绑定实例写法以及相关知识点,需要的朋友们学习下。
    2019-08-08
  • vxe-table 实现表格数据分组功能(按指定字段数据分组)

    vxe-table 实现表格数据分组功能(按指定字段数据分组)

    文章介绍了如何使用树结构实现表格数据分组,并提供了官方文档的链接,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小编一起看看吧
    2024-11-11
  • 浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法

    浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法

    下面小编就为大家分享一篇浅谈在vue中用webpack打包之后运行文件的问题以及相关配置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • Vue.js第一天学习笔记(数据的双向绑定、常用指令)

    Vue.js第一天学习笔记(数据的双向绑定、常用指令)

    这篇文章主要为大家分享了Vue.js第一天的学习笔记,包括数据的双向绑定、常用指令学习,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-12-12
  • vue实现会议室拖拽布局排座功能

    vue实现会议室拖拽布局排座功能

    vue-draggable-resizable-gorkys是一更强大的拖拽组件,可以随意拖拽,有点坐标,会议室拖拽布局排座是vue-draggable结合vue-draggable-resizable-gorkys进行开发的,本文重点给大家介绍vue实现会议室拖拽布局排座,感兴趣的朋友一起看看吧
    2023-11-11
  • vue实现旋转木马动画

    vue实现旋转木马动画

    这篇文章主要为大家详细介绍了vue实现旋转木马动画,图片数量无限制,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-07-07

最新评论