最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文解決vue2 element el-table自適應高度問題

 更新時間:2023年11月21日 10:44:28   作者:gua了個gua  
在寫公司后臺項目的時候遇到一個需求,要求表格頁面不能有滾動條,所以必須封裝一個公共方法來實現(xiàn)表格自適應高度,本問小編給大家介紹了如何解決vue2 element el-table自適應高度問題,需要的朋友可以參考下

解決element表格自適應高度問題

在寫公司后臺項目的時候遇到一個需求,要求表格頁面不能有滾動條,所以必須封裝一個公共方法來實現(xiàn)表格自適應高度

第一步 實現(xiàn)自定義指令去監(jiān)聽表格元素高度變化

我這邊使用封住思想 首先創(chuàng)建在obSize文件夾下創(chuàng)建index.js內容如下

const map = new WeakMap()
// ob監(jiān)聽
const ob = new ResizeObserver((entries) => {
   for (const entry of entries) {
       // 處理元素對應的回調
       const handler = map.get(entry.target)
       if (handler) {
           const box = entry.borderBoxSize[0]
           // 循環(huán)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)
       // 監(jiān)聽el元素尺度的變化
       map.set(el, binding.value)
   },
   unbind(el) {
       // 取消監(jiān)聽
       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文件夾內創(chuàng)建estimateTableHeight.js內容如下 70 代表距離頁面底部的高度

import { countTop } from '@/directive/obSize'
export default {
    data() {
        return {
            tableHeight: 0,
        }
    },
    methods: {
        handleSizeChange(e) {
            this.tableHeight = e.tableHeight;
        },
    },
    // 監(jiān)聽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() {
    //監(jiān)聽頁面尺寸變化
        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.js報錯:ReferenceError: “Vue is not defined“ 的原因與解決方案

    使用Vue.js報錯:ReferenceError: “Vue is not d

    在前端開發(fā)中,ReferenceError: "Vue is not defined" 是一個常見的錯誤,該錯誤通常發(fā)生在項目中未正確引入 Vue.js 框架或代碼配置存在問題時,本篇文章將詳細分析該錯誤的成因,并提供多種解決方案,幫助開發(fā)者快速排查問題,需要的朋友可以參考下
    2024-12-12
  • Vue.js學習教程之列表渲染詳解

    Vue.js學習教程之列表渲染詳解

    這篇文章主要給大家介紹了關于Vue.js列表渲染的相關資料,文中介紹的非常詳細,對大家具有一定的參考學習價值,需要的朋友們下面來一起看看吧。
    2017-05-05
  • vue2組件實現(xiàn)懶加載淺析

    vue2組件實現(xiàn)懶加載淺析

    本篇文章主要介紹了vue2組件實現(xiàn)懶加載淺析,運用懶加載則可以將頁面進行劃分,需要的時候加載頁面,可以有效的分擔首頁所承擔的加載壓力.
    2017-03-03
  • vue同個按鈕控制展開和折疊同個事件操作

    vue同個按鈕控制展開和折疊同個事件操作

    這篇文章主要介紹了vue同個按鈕控制展開和折疊同個事件操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07
  • vue實現(xiàn)登錄頁面的驗證碼以及驗證過程解析(面向新手)

    vue實現(xiàn)登錄頁面的驗證碼以及驗證過程解析(面向新手)

    這篇文章主要介紹了vue實現(xiàn)登錄頁面的驗證碼以及驗證過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • vue3+ts封裝彈窗及封裝分頁的示例代碼

    vue3+ts封裝彈窗及封裝分頁的示例代碼

    這篇文章主要介紹了vue3+ts封裝彈窗及封裝分頁的示例代碼,本文通過定義defaultDialog .vue,結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-08-08
  • vue使用百度地圖報錯BMap?is?not?defined問題及解決

    vue使用百度地圖報錯BMap?is?not?defined問題及解決

    這篇文章主要介紹了vue使用百度地圖報錯BMap?is?not?defined問題及解決,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue配合Django使用方式

    Vue配合Django使用方式

    Vue.js是前端三大框架之一,以其輕巧、高性能的特性脫穎而出,Vue.js專注于構建數(shù)據(jù)驅動的Web界面,采用漸進式設計,易于上手,支持組件化開發(fā),核心功能包括響應式數(shù)據(jù)綁定和視圖組件的組合,Vue還提供了生命周期、事件綁定等多種功能,支持ES6語法
    2024-09-09
  • Vue項目安裝使用moment.js方式

    Vue項目安裝使用moment.js方式

    文章介紹了如何在Vue項目中安裝和使用moment.js,包括安裝步驟、導入方法、漢化設置以及在Vue實例中使用moment.js進行日期處理
    2024-11-11
  • 詳解SpringBoot+Vue項目用寶塔面板部署指南

    詳解SpringBoot+Vue項目用寶塔面板部署指南

    本文提供了Spring Boot+Vue項目在寶塔面板上的完整部署指南實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2025-08-08

最新評論

威宁| 台前县| 越西县| 赤水市| 濉溪县| 延长县| 贵溪市| 望城县| 新竹市| 定州市| 西丰县| 盐山县| 翁源县| 北海市| 赫章县| 拜城县| 甘德县| 昂仁县| 石阡县| 囊谦县| 电白县| 西林县| 山东省| 互助| 邯郸市| 三穗县| 姚安县| 社旗县| 象山县| 民权县| 曲沃县| 工布江达县| 汝南县| 和田县| 柳河县| 牙克石市| 策勒县| 公安县| 雅江县| 盐池县| 侯马市|