表格循环滚动(自己记录一下)

<div class="ranking_table_box">
            <div class="ranking_table">
              <div
                class="ranking_table_tbody"
                :style="{ transform: `translate(0px,-${scrollTop}px)`, transition: 'all 0ms ease-in 0s' }"
              >
                <div
                  ref="tableScrollOne"
                  class="ranking_table_tbody_box"
                  @mouseenter="tableMouseOver"
                  @mouseleave="tableMouseOut"
                >
                  <div v-for="(item, index) in areaData" :key="index" class="ranking_table_tbody_tr flex_row">
                    <div class="ranking_table_tbody_td other_row" style="width: 10%" :title="item.sortStr">
                      <div
                        v-if="item.sort <= 3"
                        class="sort_img"
                        :class="
                          item.sort == 1 ? 'one_img' : item.sort == 2 ? 'two_img' : item.sort == 3 ? 'three_img' : ''
                        "
                      ></div>
                      <div v-else>{{ item.sortStr }}</div>
                    </div>
                    <div class="ranking_table_tbody_td txt_center" style="width: 30%">{{ item.area }}</div>
                    <div class="ranking_table_tbody_td txt_center" style="width: 30%">{{ item.yearDischarge }}</div>
                    <div class="ranking_table_tbody_td txt_center default_color" style="width: 30%">{{
                      item.targetDischarge
                    }}</div>
                  </div>
                </div>
                <div ref="copyTableOne" class="ranking_table_tbody_box"></div>
              </div>
            </div>
          </div>
// 滚动处理方法
      const tableScrollAffair = (): void => {
        state.timer = setInterval(() => {
          state.scrollTop++;
          // 获取需要滚动的盒子的高度
          let scrollItemBox = null;
           scrollItemBox = state.tableScrollOne.offsetHeight;
          // 当判断滚动的高度大于等于盒子高度时,从头开始滚动
          if (state.scrollTop >= scrollItemBox) {
            state.scrollTop = 0;
          }
        }, state.speed);
      };
      // 初始化列表滚动
      const initScroll = (): void => {
        nextTick(() => {
          state.copyTableOne.innerHTML = state.tableScrollOne.innerHTML;
          tableScrollAffair();
        });
      };
      // 鼠标移出
      const tableMouseOut = (): void => {
        tableScrollAffair();
      };
      // 鼠标移入
      const tableMouseOver = (): void => {
        clearInterval(state.timer);
      };
.ranking_table_box {
          max-height: vh(260);
          position: relative;
          width: 100%;
          overflow: hidden;
          .ranking_table {
            width: 100%;
            color: rgba(255, 255, 255, 0.8);
            font-size: vw(14);
            font-family: Source Han Sans CN;
            .ranking_table_tbody {
              height: vh(260);

              .ranking_table_tbody_box {
                box-sizing: border-box;
                overflow: hidden;
                .ranking_table_tbody_tr {
                  justify-content: space-between;
                  box-sizing: border-box;
                  padding: 0 vw(18) 0 vw(11);
                  .ranking_table_tbody_td {
                    height: vh(48);
                    line-height: vh(48);
                    width: 20%;
                    justify-content: end;
                    align-items: center;
                    .td_img {
                      width: vw(40);
                      height: vh(20);
                    }
                    .sort_img {
                      width: vw(24);
                      height: vw(24);
                      margin-left: vw(5);
                    }
                  }
                }
                .ranking_table_tbody_tr:nth-of-type(odd) {
                  background-color: rgba(52, 149, 255, 0.06);
                }
              }
            }
          }
        }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值