实现两个table的滚动条同时

14 篇文章 0 订阅

我们要实现的是:一个table的滚动条滚动,另一个table的滚动条同时进行滚动

思路:在孙组件MyTable.vue获取当前滚动条数值,以冒泡形式传递给父组件VersionComparison.vue,
父组件获取到数据 然后分发给所有孙子组件MyTable.vue,从而实现所有滚动条同时滚动

请添加图片描述

如下图所示:
请添加图片描述
这儿有三层组件:
请添加图片描述

父组件:VersionComparison.vue

请添加图片描述

  data () {
    return {
      scrollLeft: 0, 
      scrollTop: 0,
    }
  }
 methods: {
    onScroll(scrollData) {
      this.scrollLeft = scrollData.left // 获取到从一个MyTable.vue(孙子组件)传上来的数据
      this.scrollTop = scrollData.top  // 将获取到的数据分发到各个table中
    }
 }

子组件:dataTable.vue

请添加图片描述

props: {
    maxHeight: {
      type: Number
    },
    scrollLeft: {
      type: Number
    },
    scrollTop: {
      type: Number
    }
  },
  methods: {
    onScroll(scrollData) {
      this.$emit('onTableScroll', scrollData)
    }
  }

孙组件:MyTable.vue

请添加图片描述

  props: {
    maxHeight: {
      default: '100%'
    },
    scrollLeft: {
      type: Number
    },
    scrollTop: {
      type: Number
    }
  },
  watch: {
    scrollLeft (newValue) {
      this.$refs.elTable.bodyWrapper.scrollLeft = newValue // 获取当前滚动条数值
    },
    scrollTop (newValue) {
      this.$refs.elTable.bodyWrapper.scrollTop = newValue
    }
  },
  mounted() {
    this.$refs.elTable.bodyWrapper.addEventListener('scroll', this.onScroll) //监听当前滚动条数值并冒泡到父组件
  },
  beforeUnMount() {
    this.$refs.elTable.bodyWrapper.removeEventListener('scroll', this.onScroll)
  },
  methods: {
    onScroll() {
      this.$emit('onTableScroll', {top: this.$refs.elTable.bodyWrapper.scrollTop, left: this.$refs.elTable.bodyWrapper.scrollLeft})
    }
  }
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以通过设置表格的样式来隐藏滚动条,具体方法如下: 1. 在表格的外层容器上设置样式 overflow: hidden; 2. 在表格的 tbody 上设置样式 overflow-y: scroll; 这样就可以隐藏表格滚动条了。 ### 回答2: Element UI 是一个基于 Vue.js 的 UI 库,它提供了丰富的组件,包括表格组件。在使用 Element UI 表格组件时,有时候需要隐藏表格滚动条,这可以通过以下步骤完成: 1. 找到 Element UI 表格组件的容器元素,一般是一个 class 为 el-table 的 div 元素。 2. 在该容器元素的样式中设置 overflow 属性为 hidden,这样便可隐藏表格滚动条。 例如,如果要隐藏 id 为 my-table表格组件的滚动条,可以在样式中添加如下代码: ```css #my-table .el-table { overflow: hidden; } ``` 这样便可成功地隐藏表格组件的滚动条。 另外,如果想要隐藏表头和表格内容的滚动条,可以将 overflow 属性应用到 el-table__header-wrapper 和 el-table__body-wrapper 元素,例如: ```css #my-table .el-table__header-wrapper, #my-table .el-table__body-wrapper { overflow: hidden; } ``` 这样便可同时隐藏表头和表格内容的滚动条。 总之,Element UI 表格组件的滚动条隐藏,可以通过设置容器元素的 overflow 属性为 hidden 实现。 ### 回答3: 在 Element UI 中,我们可以使用 el-table 组件来显示数据表格,而当数据量较大时,就会出现滚动条。如果我们希望隐藏滚动条,可以采取以下方法: 方法1:CSS 样式方式 1.在 el-table 标签上加上 style="overflow:hidden;",这样能够隐去直接展示的滚动条,但是在鼠标滚动滚轮的时候,仍会出现默认的浏览器滚动条,不能达到完全隐藏的效果。 2.给 el-table 标签外层添加一个包裹层,如 <div class="table-wrapper">,并设置其样式为 overflow:hidden;。同时,将 el-table 的高度设置为最大值:max-height: none; height: auto;。这样展示时就能完全隐藏滚动条。 3.但是,由于这种方法需要额外添加包裹层,所以可能会减少页面的美观度,不够简洁。 方法2:JS 方式 1.在页面加载完成后,获取 el-table 的 class 属性,如:let tableClass = document.querySelector('.el-table--scrollable-y'); 2.获取到 class 属性后,为 el-table 隐藏滚动条tableClass.style.overflowY = 'hidden'; 3.但是,使用 JS 方法隐藏滚动条需要在页面加载后再操作,如果操作晚了容易引起页面的闪烁。同时,这种方式虽然能够隐藏滚动条,但是并没有解决滚动的问题,使用鼠标滚轮时仍会触发滚动事件。 总结来说,以上两种方法中,CSS 样式方式更为简洁,但是需要额外添加包裹层,而 JS 方式虽然容易实现,但是需要注意操作的时机。在实际开发中,可以根据具体需求和场景选择合适的方法来隐藏滚动条

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值