React实现无缝滚动列表

一.前言

公司最近大屏可视化需要一个循环无缝滚动的列表,也看到了一些组件。想来想去还是自己封装一个滚动组件,当然这里也借鉴了许多文章。

二.开发流程

1.首先开启滚动我们首先需要让子元素超出父元素,再把父元素添加一个overflow属性就可以完成。

 

2.怎样让列表滚动起来?

 我试过了很多方法,比如动态的改变子元素的TOP,又或者改变父元素的scrollTop,但是这些都有一个问题

 向这样当子元素到顶的时候,突然归0的话列表会出现抖动的情况。所以我又参考了别的方法最后采用了transform

原理就是在所有列表项滚动完成后,将 div 的自身位移设置为0,也就是transform: translate(0px,0px),此时的移动是一瞬间的,所以肉眼是看不出来的。我的代码逻辑就是先获取所有列表项的高度,判断scrollTop是否大于等于列表的高度,如果大于等于,就将 scrollTop 设置为0。这样就可以达到无缝滚动的效果。

 

 由于一直向上滚动可能会出现空白的情况,这里我们可以再建一个空的div,然后就已有的div复制给他

 

 鼠标的移入和移出我们可以定义一个变量,当移入就是false,移出就是true

然后根据这个变量的值进行判定。

最后希望大家一起加油。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值