ant-design-vue 的通过控制a-table的滚动条实现表格滚动效果

ant-design-vue 的通过控制a-table的滚动条实现表格滚动效果


鼠标移入滚动条停止滚动,鼠标移出滚动条继续滚动

<template>
      <div v-on:mouseout="scrollFun" v-on:mouseover="pauseScroll">
              <a-table
                :class="'my-index-table tytable1 tableRect'"
                ref="table1"
                size="small"
                rowKey="Id"
                :columns="columns1"
                :dataSource="dataSource1"
                :loading="loading"
                :pagination="false"
                :scroll="{ y: 200 }"
              >
              </a-table>
       </div>
<template/>
<script>
  data() {
    return {
    	loading:false,
    	columns1:[ {
          title: '省份',
          dataIndex: 'provinceName',
          align: 'center',
          width: 65,
          ellipsis: true
        },

        {
          title: '地市',
          dataIndex: 'cityCountyName',
          align: 'center',
          width: 65,
          ellipsis: true
        },
        {
          title: '县区',
          dataIndex: 'countyName',
          align: 'center',
          width: 65,
          ellipsis: true
        },],
        dataSource1:[
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:1},
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:2},
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:3},
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:4},
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:5},
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:6},
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:8},
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:9},
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:10},
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:11},
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:12},
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:13},
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:14},
        {provinceName:'1',cityCountyName:'1',countyName:'1',Id:15},
        ]
    }
  },
  mounted() {
    this.$nextTick(() => {
      this.scrollFun()
    })
  },
methods: {
    // 自动滚动
    scrollFun() {
      // 如果定时器存在
      if (this.scrollTimer) {
        // 则先清除
        clearInterval(this.scrollTimer)
        this.scrollTimer = null
      }
      this.scrollTimer = setInterval(() => {
        const scrollHeight = document.querySelectorAll(`.tableRect .ant-table-body`)[0].scrollHeight
        const clientHeight = document.querySelectorAll(`.tableRect .ant-table-body`)[0].clientHeight
        const scroll = scrollHeight - clientHeight
        // 获取当前滚动条距离顶部高度		tableRect是a-table标签名
        const scrollTop = document.querySelectorAll(`.tableRect .ant-table-body`)[0].scrollTop
        // 向下滚动
        if (this.scrollDirection === 'down') {
          // 滚动速度
          const temp = scrollTop + 10
          document.querySelectorAll(`.tableRect .ant-table-body`)[0].scrollTop = temp // 滚动
          // 距离顶部高度  大于等于 滚动长度
          if (scroll <= temp) {
            // 滚动到底部 停止定时器
            clearInterval(this.scrollTimer)
            this.scrollTimer = null
          }
        }
      }, 300)
    },
    // 停止滚动
    pauseScroll() {
      // 定时器不为空
      if (this.scrollTimer) {
        // 清除定时器
        clearInterval(this.scrollTimer)
        this.scrollTimer = null
      }
    },
}
<script/>
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值