• 数字插件滚动效果(游戏机滚动抽奖结果)


    引入插件  react-transition-group

    import { CSSTransition, TransitionGroup } from 'react-transition-group'
      
    class TextAnimation extends Component {
      state = {
        data: []
      }
    
      componentDidMount(){
        this.setState({
          data: this.props.str.split('')
        })
      }
      render() {
        const { timeout, interval, showBox, exit_callback, start } = this.props
        const delay = interval || 400
        return (
          <div
            style={{ ...this.props.style }}
            className={Css.text_animation}
            ref={ref => (this.ref = ref)}
          >
            <TransitionGroup className={Css.text_list}>
              {this.state.data.map((val, index) => {
                return (
                  <CSSTransition
                    key={index}
                    in={start}
                    timeout={200}
                    onEnter={e => {
                      // e.style.backgroundPositionY = `0`
                      e.style.backgroundPositionY = `${utils.px2rem((+45 + 30) * 9+16)}`  //图片默认位置
                    }}
                    unmountOnExit
                    onExited={exit_callback} //整个动画结束
                    onEntering={
                      e => {
                        // // e.style.backgroundPositionY = `${-3 * val - 30}rem`
                        e.style.backgroundPositionY = `${utils.px2rem((-45- 32 ) * val)}`  //图片高45,2个数字间距32
                        // e.style.backgroundPositionY = `${utils.px2rem((0 ) * val)}`  //图片高45,2个数字间距32
                        e.style.transitionProperty = "background-position-y"
                        e.style.transitionDuration = `${(index + 1) * delay}ms`
                        e.style.transitionTimingFunction = "ease-out"
                      }
                    }
                  >
                    <span key={index} />
                  </CSSTransition>
                )
              })}
            </TransitionGroup>
          </div>
        )
      }
    }
    
    export default TextAnimation
    

    对应样式文件

    .text_animation {
      height: 100%;
    
      .text_list {
        height: 100%;
      }
    
      span {
         px2rem(82px);
        height: px2rem(88px);
        display: inline-block;
        background-image: url("../../../../img/insurance/text_animation.png");
        background-repeat: repeat-y;
        background-position: center 0;
        background-size: px2rem(28px) px2rem(770px);
        padding-right: px2rem(10px);
        position: relative;
        top: px2rem(4px);
      }
    }
    

     然后引入即可

    最后是需要一张如下一张透明的的图片:选择可以选中,转载自 :https://juejin.cn/post/6844903845965856782

  • 相关阅读:
    day10_发送邮件终极版
    day10_发送带附件的邮件
    day10_发送普通邮件
    day10_多线程性能测试
    day10_虚拟环境和搭建测试环境的步骤
    codeforces 877B
    codeforces 982C Cut 'em all! (dfs)
    洛谷P1171 售货员的难题 dp
    点集配对问题
    codeforces 891A Pride (数学)
  • 原文地址:https://www.cnblogs.com/xiaoyaoweb/p/14959088.html
Copyright © 2020-2023  润新知