亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Element Table 自適應高度的實現(xiàn)示例

 更新時間:2024年07月24日 10:05:12   作者:ErvinHowell  
el-table的高度不能適應不同電腦的分辨率,也不能跟隨瀏覽器的高度變化而變化的問題,本文就來解決一下Element Table 自適應高度,感興趣的可以了解一下

分析

如下圖(此方案中使用的是Element Table官網(wǎng)copy的代碼(多用于OA, CMS, ERP這類系統(tǒng)中)

如上圖大體目前沒有問題,但是存在細節(jié)問題那就是在table在滾動的過程中表頭沒有了

如果說這里的列比較多,用戶需要查看的數(shù)據(jù)在最后面,每次某個列的數(shù)據(jù)對應的是什么意思(尤其是表格數(shù)字比較多的話,非常惱火),需要上下來回滾動table 內(nèi)容才能解決

所以說我們要解決的就是表頭固定 ①(標記問題)

表頭固定簡單 官方提供prop => height,那繼續(xù)看下圖

我們的用戶群在使用產(chǎn)品的過程中, 不可能說是固定用同樣大小屏幕

假設我們這里設置了固定高度600px

那有些用戶使用過程中 將窗口縮小了 不夠600px

就會出現(xiàn) table的body中一個滾動條  table外面的容器出現(xiàn)一個滾動條

還有就是有些用戶使用的是大屏幕,很顯然600px可能只占了他屏幕的一半,這里數(shù)據(jù)又多

就又出現(xiàn)新的問題,明明我屏幕可以顯示完,產(chǎn)品這里只占了一半 然后開始滾動

所以新的問題高度如何設置,才能使我們適應各種用戶

我們這里想到一個辦法,動態(tài)計算并且將table的height設置為父節(jié)點的height
那父節(jié)點不管是flex: 1,還是height:100%,都能夠適應

問題

我們需要解決上面兩個問題

  • 要解決的就是表頭固定
  • 高度如何設置,才能使我們適應各種用戶

表頭固定

這里表頭固定還是使用Element UI官方提供的方案——設置height

<!-- table 部分代碼 -->
<el-table id="tableData" :data="tableData" :height="height">
  <el-table-column prop="date" label="日期" width="140"></el-table-column>
  <el-table-column prop="name" label="姓名" width="120"></el-table-column>
  <el-table-column prop="address" label="地址"></el-table-column>
</el-table>
export default {
  data() {
    const item = {
      date: "2016-05-02",
      name: "王小虎",
      address: "上海市普陀區(qū)金沙江路 1518 弄"
    };
    return {
      // 模擬數(shù)據(jù)
      tableData: Array(100).fill(item),
      // 隨便定義一個初始高度防止報錯
      height: "200px"
    };
  }
}

如上設置height設置好了table表頭固定

高度如何設置

上面設置好了表頭固定, 繼續(xù)我們要動態(tài)設置height為父節(jié)點的height
并且給el-table設置 id <el-table id="tableData" :data="tableData" :height="height">

這里需要注意的是 我們在設置為父節(jié)點的height的過程中假設父節(jié)點有padding值我們需要減掉

export default {
    methods: {
    // 這個方法用來動態(tài)設置 height
    getAutoHeight() {
      let el = document.querySelector("#tableData"),
        elParent = el.parentNode,
        pt = this.getStyle(elParent, "paddingTop"),
        pb = this.getStyle(elParent, "paddingBottom");
      // 一定要使用 nextTick 來改變height 不然不會起作用
      this.$nextTick(() => {
        this.height = elParent.clientHeight - (pt + pb) + "px";
      });
    },
    // 獲取樣式 我們需要減掉 padding-top, padding-bottom的值
    getStyle(obj, attr) {
      // 兼容IE瀏覽器
      let result = obj.currentStyle
        ? obj.currentStyle[attr].replace("px", "")
        : document.defaultView
            .getComputedStyle(obj, null)[attr].replace("px", "");
      return Number(result);
    }
  }
}

高度設置好了,我們需要在掛載結(jié)束后的鉤子函數(shù)中調(diào)用 此方法

export default {
  mounted() {
    this.getAutoHeight();
  }
}

那基本已經(jīng)離結(jié)束不遠了 , 繼續(xù)看圖

但是這里又產(chǎn)生了新的問題,那就是 如果窗口大小改變, 那原來的height就不適用于現(xiàn)在的height
來來來 繼續(xù)看圖 就會出現(xiàn)兩個滾動條

解決這個問題的辦法 需要做兩個操作

在window.onresize中調(diào)用我們設置的 獲取高度的方法

export default {
  mounted() {
    this.getAutoHeight();
    const self = this;
    window.onresize = function() {
      self.getAutoHeight();
    };
  }
}

并且將父級節(jié)點CSS設置為overflow: hidden

我這里使用的官網(wǎng)示例代碼 我的如下

.el-main {
  overflow: hidden !important;
}

最終成果

我這里用控制臺的高度 模擬窗口高度變化

完整代碼如下

<template>
  <el-container class="layout" style="border: 1px solid #eee">
    <el-aside width="200px" style="background-color: rgb(238, 241, 246)">ASIDE</el-aside>
    <el-container>
      <el-header style="text-align: right; font-size: 12px">HRADER</el-header>
      <el-main>
        <el-table id="tableData" :data="tableData" :height="height">
          <el-table-column prop="date" label="日期" width="140"></el-table-column>
          <el-table-column prop="name" label="姓名" width="120"></el-table-column>
          <el-table-column prop="address" label="地址"></el-table-column>
        </el-table>
      </el-main>
    </el-container>
  </el-container>
</template>
<script>
export default {
  name: "AutoHeightTable",
  data() {
    const item = {
      date: "2016-05-02",
      name: "王小虎",
      address: "上海市普陀區(qū)金沙江路 1518 弄"
    };
    return {
      tableData: Array(100).fill(item),
      height: "200px"
    };
  },
  mounted() {
    this.getAutoHeight();
    const self = this;
    window.onresize = function() {
      self.getAutoHeight();
    };
  },
  methods: {
    getAutoHeight() {
      let el = document.querySelector("#tableData"),
        elParent = el.parentNode,
        pt = this.getStyle(elParent, "paddingTop"),
        pb = this.getStyle(elParent, "paddingBottom");
      this.$nextTick(() => {
        this.height = elParent.clientHeight - (pt + pb) + "px";
      });
    },
    getStyle(obj, attr) {
      // 兼容IE瀏覽器
      let result = obj.currentStyle
        ? obj.currentStyle[attr].replace("px", "")
        : document.defaultView
            .getComputedStyle(obj, null)[attr].replace("px", "");
      return Number(result);
    }
  }
};
</script>
<style>
.layout {
  height: 100%;
  width: 100%;
  overflow: hidden;
}
.el-header {
  background-color: #b3c0d1;
  color: #333;
  line-height: 60px;
}

.el-aside {
  color: #333;
}
.el-main {
  overflow: hidden !important;
}
</style>

上面代碼只是一種思路
更多的解決方案
還是得從業(yè)務出發(fā)進行封裝

到此這篇關(guān)于Element Table 自適應高度的實現(xiàn)示例的文章就介紹到這了,更多相關(guān)Element Table 自適應高度內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue3響應式對象數(shù)組不能實時DOM更新問題解決辦法

    Vue3響應式對象數(shù)組不能實時DOM更新問題解決辦法

    在寫大文件上傳時,碰到關(guān)于 vue2 跟 vue3 對在循環(huán)中使用異步,并動態(tài)把普通對象添加進響應式數(shù)據(jù),在異步前后修改該普通對象的某個屬性,導致 vue2 跟 vue3 的視圖更新不一致,引發(fā)一系列的思考,所以本文介紹了Vue3響應式對象數(shù)組不能實時DOM更新問題解決辦法
    2024-07-07
  • 搭建Vue3+Vite+Ts腳手架的示例代碼

    搭建Vue3+Vite+Ts腳手架的示例代碼

    本文介紹了Vue3+Vite+Ts搭建腳手架的實現(xiàn),步驟包括創(chuàng)建項目、選擇技術(shù)棧、安裝依賴及運行項目,旨在為開發(fā)者提供一個簡易快速的搭建流程,感興趣的可以了解一下
    2024-11-11
  • vue?雙向綁定問題$emit無效的解決

    vue?雙向綁定問題$emit無效的解決

    這篇文章主要介紹了vue?雙向綁定問題$emit無效的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue watch監(jiān)聽對象及對應值的變化詳解

    vue watch監(jiān)聽對象及對應值的變化詳解

    下面小編就為大家分享一篇vue watch監(jiān)聽對象及對應值的變化詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-02-02
  • vue從后臺渲染文章列表以及根據(jù)id跳轉(zhuǎn)文章詳情詳解

    vue從后臺渲染文章列表以及根據(jù)id跳轉(zhuǎn)文章詳情詳解

    這篇文章主要給大家介紹了關(guān)于vue從后臺渲染文章列表以及根據(jù)id跳轉(zhuǎn)文章詳情的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • vue使用富文本編輯器vue-quill-editor的操作指南和注意事項

    vue使用富文本編輯器vue-quill-editor的操作指南和注意事項

    vue中很多項目都需要用到富文本編輯器,在使用了ueditor和tinymce后,發(fā)現(xiàn)并不理想,所以果斷使用vue-quill-editor來實現(xiàn),下面這篇文章主要給大家介紹了關(guān)于vue使用富文本編輯器vue-quill-editor的操作指南和注意事項,需要的朋友可以參考下
    2023-05-05
  • vue項目配置vuex并開啟熱更新方式

    vue項目配置vuex并開啟熱更新方式

    這篇文章主要介紹了vue項目配置vuex并開啟熱更新方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • vue計算屬性和監(jiān)聽器實例解析

    vue計算屬性和監(jiān)聽器實例解析

    本文通過基本實例給大家介紹了vue計算屬性和監(jiān)聽器的相關(guān)知識,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-05-05
  • vue2使用el-tag實現(xiàn)自定義菜單導航標簽

    vue2使用el-tag實現(xiàn)自定義菜單導航標簽

    這篇文章主要為大家詳細介紹了vue2如何使用el-tag實現(xiàn)自定義菜單導航標簽,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-12-12
  • vue-cli3使用postcss-plugin-px2rem方式

    vue-cli3使用postcss-plugin-px2rem方式

    這篇文章主要介紹了vue-cli3使用postcss-plugin-px2rem方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-07-07

最新評論