el-table 多个表格同步滚动

448 阅读2分钟

需求

多个表格同步滚动以及固定表头

解决方式

我们知道el-table固定表头只需要给table一个固定高度就可以实现;可是如果多个表格同时给定高,就会出现多个滚动条,这时候我们想要它同步滚动,就需要让table的bodyWrapper数值一样

bodyWrapper:它相当于js中的dom,常用的属性值scrollTop;scrollLeft

示例代码

<template>
  <div style="background: #fff;padding:10px">
    <el-table :data="tableData" height:500px  ref="firstTable">
      <el-table-column prop="date" label="日期" width="180">
      </el-table-column>
      <el-table-column prop="name" label="姓名" width="180">
      </el-table-column>
      <el-table-column prop="address" label="地址" width="250px">
      </el-table-column>
    </el-table>
    <el-table :data="tableOtherData" height:500px  ref="secondTable">
      <el-table-column prop="date" label="日期" width="180">
      </el-table-column>
      <el-table-column prop="name" label="姓名" width="180">
      </el-table-column>
      <el-table-column prop="address" label="地址" width="250px">
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default {
  name:'demo',
  data() {
    return {
      tableData: [{
        date: '2016-05-02',
        name: '王小虎',
        address: '上海市普陀区金沙江路 1518 弄'
      }, {
        date: '2016-05-04',
        name: '大虎',
        address: '上海市普陀区金沙江路 1517 弄'
      }, {
        date: '2016-05-01',
        name: '哈哈哈',
        address: '上海市普陀区金沙江路 1519 弄'
      }, {
        date: '2016-05-03',
        name: '小新',
        address: '上海市普陀区金沙江路 1516 弄'
      }],
      tableOtherData: [{
        date: '2016-05-02',
        name: '张三',
        address: '上海市普陀区金沙江路 1518 弄'
      }, {
        date: '2016-05-04',
        name: '张四',
        address: '上海市普陀区金沙江路 1517 弄'
      }, {
        date: '2016-05-01',
        name: '张五',
        address: '上海市普陀区金沙江路 1519 弄'
      }, {
        date: '2016-05-03',
        name: '张六',
        address: '上海市普陀区金沙江路 1516 弄'
      }],
    };
  },
  mounted() {
    this.syncScroll()
  },
  methods: {
    syncScroll() {
      let firstTable = this.$refs.firstTable.bodyWrapper
      let secondTable = this.$refs.secondTable.bodyWrapper
      firstTable.addEventListener("scroll", () => {
        secondTable.scrollTop = firstTable.scrollTop
      })
      secondTable.addEventListener("scroll", () => {
        firstTable.scrollTop = secondTable.scrollTop
      })
    }
  }
};
</script>

博客

同时发表在 饼干

194d1eb4b1a734947c3293da49b9c65.png