欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

關于element-ui表頭吸附問題的解決方案

 更新時間:2024年01月26日 08:27:11   作者:superJane  
數(shù)據(jù)過多滑動表格的時候,看不到表頭不知道對應的數(shù)據(jù)是什么,用戶體驗操作不友好,要改成表頭固定住,所以本文給大家介紹了關于element-ui表頭吸附問題的兩個解決方案,需要的朋友可以參考下

前幾天我接到一個需求說:數(shù)據(jù)過多滑動表格的時候,看不到表頭不知道對應的數(shù)據(jù)是什么,用戶體驗操作不友好,要改成表頭固定住。我當時聽到這個需求都要炸裂了,因為我們表格用的是Element Ui,框架不支持啊??! 難道要把所有表格都替換成自己手寫的嗎,這個工作量太大了啦

經(jīng)過幾天幾夜的思考,大聰明的我想到了2個方案,廢話不說,直接上干貨

第一種方案:

el-table 添加height屬性,即可以實現(xiàn)頭部固定,但是這個屬性不太適合我們公司的業(yè)務,因為我們的后臺界面基本都是上部分已經(jīng)占了部分面積,到了小屏幕電腦,表格的視圖區(qū)會很少,所以這個方案我是不考慮的了

第二種方案:

就是來一個掩蓋手法,當滑動到一定位置時,顯示另一個表頭,造成像吸頂?shù)母杏X,聽起來是不是已經(jīng)有點撥云見日了

1.因為表頭固定會在多個地方用到,所以弄成了組件。先創(chuàng)建一個表頭的組件pk-table-header

<template>
  <div
    id="fix-table-header"
    class="table-wrapper"
    :style="{top: `${navHeightV2}px`}"> // 這里的top是因為我們后臺頂部會有一些固定提示
    <el-table
      :data="[]"
      style="width: 100%"
      v-bind="{...$tableClass}"
      class="g-table-wrapper table-header">
      <template v-for="(item,index) in columns">
        <el-table-column
          v-if="item.show"
          :key="index"
          v-bind="{...item}">
          <!-- S 自定義表頭 -->
          <template v-if="item.type === 'custom'"
                    slot="header">
            {{ item.label }}
          </template>
          <!-- E 自定義表頭 -->
        </el-table-column>
      </template>
    </el-table>
  </div>
</template>
 
<script>
// vuex
import { mapState } from 'vuex';
export default {
  name: 'pk-table-header',
  props: {
    // 列表
    columns: {
      type: Array,
      default: () => []
    }
  },
  computed: {
    ...mapState({
      navHeightV2: (state) => state.app.navHeightV2 // 導航欄高度V2
    })
  }
};
</script>
 
<style lang="scss" scoped>
.table-wrapper {
  position: sticky;
  left: 0;
  right: 0;
  z-index: 4;
}
.g-table-wrapper {
  position: relative;
  margin-top: -48px;
  border: 1px solid #ebeef5;
  border-bottom: 0;
}
.table-header {
  margin-top: 0;
  height: 48px;
  overflow: hidden;
}

2.在utils文件里添加以下方法,因為如果表格有做左側(cè)或右側(cè)固定,表格滑動時表頭組件也要跟著滑動

export const hanldeTableScroll = (vue) => {
  vue.$nextTick(() => {
    if (!vue.$refs.table) return;
    // 獲取表格實例
    const tableEl = vue.$refs.table.$el;
    const mainTable = tableEl.querySelectorAll('.el-table__body-wrapper')[0];
    // 獲取表頭組件實例
    const tableHeaderEl = vue.$refs.tableHeader.$el;
    // 處理因為左側(cè)或右側(cè)固定,滑動時,表頭組件跟著滑動
    mainTable.onscroll = function() {
      let mainTableLeft = this.scrollLeft;
      let fixTabel = tableHeaderEl.querySelectorAll('.el-table__body-wrapper')[0];
      let mainTableHeadr = tableEl.querySelectorAll('.el-table__header-wrapper')[0];
      fixTabel.scrollLeft = mainTableLeft;
      mainTableHeadr.scrollLeft = mainTableLeft;
    };
    // 判斷表頭組件什么時候顯示
    const rect = tableEl.getBoundingClientRect();
    const top = rect.top || tableEl.offsetTop;
    // 這里是我們公司業(yè)務需要兼容頂部通知、到期等顯示
    let stickyTop = vue.$store.state.app.navHeightV2;
    let shouldFixHeader = top < stickyTop;

    tableEl.style.zIndex = shouldFixHeader ? 0 : 5;
  });
};

3.下面就是要開始使用前面兩個步驟的代碼了

  • 引入表頭組件,引入數(shù)據(jù),引入表格方法?

  • 在mounted的時候監(jiān)聽滾動事件?

【效果展示 】

以上就是關于element-ui表頭吸附問題的解決方案的詳細內(nèi)容,更多關于element-ui表頭吸附的資料請關注腳本之家其它相關文章!

相關文章

  • vue實現(xiàn)分環(huán)境打包步驟(給不同的環(huán)境配置相對應的打包命令)

    vue實現(xiàn)分環(huán)境打包步驟(給不同的環(huán)境配置相對應的打包命令)

    這篇文章主要介紹了vue實現(xiàn)分環(huán)境打包步驟(給不同的環(huán)境配置相對應的打包命令),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-06-06
  • vue?eslint報錯error?"Component?name?"*****"?should?always?be?multi-word"解決

    vue?eslint報錯error?"Component?name?"*****"

    這篇文章主要給大家介紹了關于vue?eslint報錯error?“Component?name?“*****“?should?always?be?multi-word”的解決方法,文中通過圖文以及實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-09-09
  • koa2+vue實現(xiàn)登陸及登錄狀態(tài)判斷

    koa2+vue實現(xiàn)登陸及登錄狀態(tài)判斷

    這篇文章主要介紹了koa2+vue實現(xiàn)登陸及登錄狀態(tài)判斷,本文通過實例代碼給大家介紹的非常詳細,具有一定的參考借鑒價值 ,需要的朋友可以參考下
    2019-08-08
  • 詳解Vue2.0配置mint-ui踩過的那些坑

    詳解Vue2.0配置mint-ui踩過的那些坑

    這篇文章主要介紹了詳解Vue2.0配置mint-ui踩過的那些坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-04-04
  • vue高德地圖繪制行政區(qū)邊界功能

    vue高德地圖繪制行政區(qū)邊界功能

    這篇文章主要介紹了vue高德地圖繪制行政區(qū)邊界功能,本文通過實例代碼給大家介紹的非常詳細,感興趣的朋友一起看看吧
    2024-03-03
  • vue v-on:click傳遞動態(tài)參數(shù)的步驟

    vue v-on:click傳遞動態(tài)參數(shù)的步驟

    這篇文章主要介紹了vue v-on:click傳遞動態(tài)參數(shù)的步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • 詳解Vue源碼學習之雙向綁定

    詳解Vue源碼學習之雙向綁定

    這篇文章主要介紹了Vue源碼學習之雙向綁定,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-04-04
  • Vue+Microapp實現(xiàn)微前端的示例詳解

    Vue+Microapp實現(xiàn)微前端的示例詳解

    這篇文章主要為大家詳細介紹了如何實現(xiàn)以vite+vue3+Microapp為主應用,以vue2+element為子應用的微前端,感興趣的小伙伴快跟隨小編一起學習一下吧
    2023-06-06
  • Vant的安裝和配合引入Vue.js項目里的方法步驟

    Vant的安裝和配合引入Vue.js項目里的方法步驟

    這篇文章主要介紹了Vant的安裝和配合引入Vue.js項目里的方法步驟,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • 解決Vue編譯時寫在style中的路徑問題

    解決Vue編譯時寫在style中的路徑問題

    下面小編就為大家?guī)硪黄鉀QVue編譯時寫在style中的路徑問題。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09

最新評論