React 数字滑动器

作者: GloryMan | 来源:发表于2021-06-28 12:41 被阅读0次

    先上效果图

    demo.gif

    源码已上传github
    源码已上传gitee

    思路

    使用两张图片拼起来,数字就是
    0、1、2、3、4、5、6、7、8、9、0、1、2、3、4、5、6、7、8、9
    1.使用偏移量移动化的方式往上偏移
    2.当偏移的数字大于上次的数组就正常偏移
    3.第二次数字小于上次的数字,就要持续往上偏移到指定数字
    4.之后再把偏移的位置设置到最初的位置上

    目前是一直往上滚动切换数字

    实现

    利用 transform 的 translateY 偏移和 transition 动画来实现

    具体实现

    代码中注释很清楚,不懂的可以评论区或者私信我


    截屏2021-06-28 下午12.29.56.png

    使用方法

    目前组件已单独封装成组件使用时:

    import { Draw } from './components'
    export const App: React.FC = () => {
      const [numberList, setNumberList] = useState([1, 2, 3, 4, 5, 6])
      useEffect(() => {
        setInterval(() => {
          console.log('-------')
          setNumberList([
            rand(10),
            rand(10),
            rand(10),
            rand(10),
            rand(10),
            rand(10),
          ])
        }, 2000)
      }, [])
      function rand(n) {
        return Math.floor(Math.random() * n)
      }
    
      return (
        <div className={styles.App}>
          <header className={styles['App-header']}>
            <img src={logo} className={styles['App-logo']} alt="logo" />
            <div className={styles['draw-bg']}>
              {numberList.map((res) => {
                return <Draw count={res} />
              })}
            </div>
          </header>
        </div>
      )
    }
    
    

    更多阅读

    还有一种实现方式是使用
    transform: transationY + background-position 锚点来实现,具体实现可以自己尝试下

    相关文章

      网友评论

        本文标题:React 数字滑动器

        本文链接:https://www.haomeiwen.com/subject/cuppyltx.html