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

關(guān)于element-ui表頭吸附問(wèn)題的解決方案

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

前幾天我接到一個(gè)需求說(shuō):數(shù)據(jù)過(guò)多滑動(dòng)表格的時(shí)候,看不到表頭不知道對(duì)應(yīng)的數(shù)據(jù)是什么,用戶體驗(yàn)操作不友好,要改成表頭固定住。我當(dāng)時(shí)聽(tīng)到這個(gè)需求都要炸裂了,因?yàn)槲覀儽砀裼玫氖荅lement Ui,框架不支持?。?! 難道要把所有表格都替換成自己手寫的嗎,這個(gè)工作量太大了啦

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

第一種方案:

el-table 添加height屬性,即可以實(shí)現(xiàn)頭部固定,但是這個(gè)屬性不太適合我們公司的業(yè)務(wù),因?yàn)槲覀兊暮笈_(tái)界面基本都是上部分已經(jīng)占了部分面積,到了小屏幕電腦,表格的視圖區(qū)會(huì)很少,所以這個(gè)方案我是不考慮的了

第二種方案:

就是來(lái)一個(gè)掩蓋手法,當(dāng)滑動(dòng)到一定位置時(shí),顯示另一個(gè)表頭,造成像吸頂?shù)母杏X(jué),聽(tīng)起來(lái)是不是已經(jīng)有點(diǎn)撥云見(jiàn)日了

1.因?yàn)楸眍^固定會(huì)在多個(gè)地方用到,所以弄成了組件。先創(chuàng)建一個(gè)表頭的組件pk-table-header

<template>
  <div
    id="fix-table-header"
    class="table-wrapper"
    :style="{top: `${navHeightV2}px`}"> // 這里的top是因?yàn)槲覀兒笈_(tái)頂部會(huì)有一些固定提示
    <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 // 導(dǎo)航欄高度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文件里添加以下方法,因?yàn)槿绻砀裼凶鲎髠?cè)或右側(cè)固定,表格滑動(dòng)時(shí)表頭組件也要跟著滑動(dòng)

export const hanldeTableScroll = (vue) => {
  vue.$nextTick(() => {
    if (!vue.$refs.table) return;
    // 獲取表格實(shí)例
    const tableEl = vue.$refs.table.$el;
    const mainTable = tableEl.querySelectorAll('.el-table__body-wrapper')[0];
    // 獲取表頭組件實(shí)例
    const tableHeaderEl = vue.$refs.tableHeader.$el;
    // 處理因?yàn)樽髠?cè)或右側(cè)固定,滑動(dòng)時(shí),表頭組件跟著滑動(dòng)
    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;
    };
    // 判斷表頭組件什么時(shí)候顯示
    const rect = tableEl.getBoundingClientRect();
    const top = rect.top || tableEl.offsetTop;
    // 這里是我們公司業(yè)務(wù)需要兼容頂部通知、到期等顯示
    let stickyTop = vue.$store.state.app.navHeightV2;
    let shouldFixHeader = top < stickyTop;

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

3.下面就是要開(kāi)始使用前面兩個(gè)步驟的代碼了

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

  • 在mounted的時(shí)候監(jiān)聽(tīng)滾動(dòng)事件?

【效果展示 】

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

相關(guān)文章

  • Vue 實(shí)時(shí)監(jiān)聽(tīng)窗口變化 windowresize的兩種方法

    Vue 實(shí)時(shí)監(jiān)聽(tīng)窗口變化 windowresize的兩種方法

    這篇文章主要介紹了Vue 實(shí)時(shí)監(jiān)聽(tīng)窗口變化 windowresize的兩種方法,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-11-11
  • vue ssr 實(shí)現(xiàn)方式(學(xué)習(xí)筆記)

    vue ssr 實(shí)現(xiàn)方式(學(xué)習(xí)筆記)

    這篇文章主要介紹了vue ssr 實(shí)現(xiàn)方式(學(xué)習(xí)筆記),本文不涉及到源碼解析,主要講解如何實(shí)現(xiàn) vue 的服務(wù)端渲染,比較適合 vue-ssr 小白閱讀,感興趣的小伙伴們可以參考一下
    2019-01-01
  • 復(fù)刻畫龍產(chǎn)品vue實(shí)現(xiàn)新春氣泡兔

    復(fù)刻畫龍產(chǎn)品vue實(shí)現(xiàn)新春氣泡兔

    這篇文章主要為大家介紹了復(fù)刻畫龍產(chǎn)品之使用vue實(shí)現(xiàn)新春氣泡兔示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Vue利用路由鉤子token過(guò)期后跳轉(zhuǎn)到登錄頁(yè)的實(shí)例

    Vue利用路由鉤子token過(guò)期后跳轉(zhuǎn)到登錄頁(yè)的實(shí)例

    下面小編就為大家?guī)?lái)一篇Vue利用路由鉤子token過(guò)期后跳轉(zhuǎn)到登錄頁(yè)的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • 教你使用vue3寫Json-Preview的示例代碼

    教你使用vue3寫Json-Preview的示例代碼

    這篇文章主要介紹了用vue3寫了一個(gè)Json-Preview的相關(guān)知識(shí),引入后直接<json-preview?v-model="jsonData"></json-preview>就可以使用了,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 學(xué)習(xí)筆記之Vuex的用法總結(jié)(Vue狀態(tài)管理)

    學(xué)習(xí)筆記之Vuex的用法總結(jié)(Vue狀態(tài)管理)

    這篇文章主要介紹了學(xué)習(xí)筆記之Vuex的用法總結(jié)(Vue狀態(tài)管理),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • 如何使用 Deepseek 寫的uniapp油耗計(jì)算器

    如何使用 Deepseek 寫的uniapp油耗計(jì)算器

    這篇文章主要介紹了如何使用 Deepseek 寫的uniapp油耗計(jì)算器,下面是一個(gè)基于 Uniapp 的油耗計(jì)算器實(shí)現(xiàn),包含 Vue 組件和頁(yè)面代碼,需要的朋友可以參考下
    2025-04-04
  • VUEX如何使用

    VUEX如何使用

    Vuex?可以幫助我們管理共享狀態(tài),并附帶了更多的概念和框架,本文主要介紹了VUEX如何使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • vue-resource攔截器設(shè)置頭信息的實(shí)例

    vue-resource攔截器設(shè)置頭信息的實(shí)例

    下面小編就為大家?guī)?lái)一篇vue-resource攔截器設(shè)置頭信息的實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-10-10
  • vue2.0實(shí)現(xiàn)選項(xiàng)卡導(dǎo)航效果

    vue2.0實(shí)現(xiàn)選項(xiàng)卡導(dǎo)航效果

    這篇文章主要為大家詳細(xì)介紹了vue2.0實(shí)現(xiàn)選項(xiàng)卡導(dǎo)航效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03

最新評(píng)論

根河市| 兴城市| 门源| 布拖县| 屏东县| 华安县| 营口市| 陈巴尔虎旗| 宁化县| 老河口市| 惠东县| 咸阳市| 昌江| 中卫市| 许昌市| 阿拉善左旗| 灌云县| 阳西县| 明溪县| 迭部县| 宁远县| 商洛市| 龙山县| 类乌齐县| 丘北县| 资中县| 深圳市| 沁源县| 宁陵县| 盐池县| 东丰县| 洞头县| 诏安县| 甘南县| 莲花县| 林州市| 漳州市| 合江县| 商丘市| 五常市| 布尔津县|