不用任何js库,只用CSS3和JS实现的转盘抽奖!

 

如图:

 

思路:转盘为一个圆形,可以想到CSS3的transform: rotate(360deg),对,就是旋转。

          1、让中间的指针在转盘上旋转,达到抽奖的动画。

          2、确定指针停下来的位置,基本就完成了。剩下的联调了,就不用多说了。

实现步骤:

          1、将页面按照设计图排好版。

          2、将第一个奖品定位到指针正中的位置,第二个将第一个复制+旋转60度,以此例推。

          3、奖品放好了,接下来就开始设计指针的动画,默认转几圈(6圈?7圈?【 rotate(360*6deg)】【 rotate(360*7deg)】)

          4、动画完成之后,在最后停留在想要停留的位置。一等奖(1*60),二等奖(2*60),以此例推。

          5、跟后台配合好需要的参数。OK完成

主要代码:

clickLottery=() => {
    const { isBtnEnable } = this.state
    // 禁止用户连续点击
    if (isBtnEnable) {
      this.setState({ isBtnEnable :false })
      clearTimeout(this.timer)
      let slugNumber = 5
      this.animation(2* 60) // // 停留的位置
      this.timer = setTimeout(() => {
        this.setState({ isBtnEnable :true })
      }, 6000)
    }
  }
  animation = (circle) => {
    let rotateTip = this.refs.rotate_tip
    let initDeg = 0
    if (rotateTip.style.transform)initDeg = rotateTip.style.transform.replace(/[^0-9]/ig, '') * 1
    // 缓冲为6圈
    rotateTip.style.transform = `rotate(${3600 + circle + initDeg - initDeg % 360}deg)`
  }

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值